【问题标题】:How can I deploy artifacts from a Maven build to the SourceForge File Release System?如何将 Maven 构建中的工件部署到 SourceForge 文件发布系统?
【发布时间】:2010-09-06 04:48:12
【问题描述】:

我正在将 SourceForge 用于一些开源项目,并且我想自动将发布部署到 SourceForge 文件发布系统。我使用 Maven 进行构建,除非您进行一些手动准备工作,否则标准的 SFTP 部署机制似乎不起作用。我在其他论坛上看到了一些旧帖子,建议唯一的方法是专门为 SourceForge 编写 Wagon。

最近有人有这方面的经验吗?

【问题讨论】:

    标签: java maven-2 sourceforge


    【解决方案1】:

    我无法对此进行测试以确认,但我相信无需编写任何插件即可。

    你可以deploy to SourceForge using SCP,maven-deploy-plugin 可以配置为use SCP,所以它应该可以工作。您还可以通过 SCP 部署您的 site to SourceForge

    您可以在 settings.xml 中配置 SourceForge 服务器以使用带有逗号分隔符的“组合”用户名。使用这些凭据:

    SourceForge username: foo
    SourceForge user password: secret
    SourceForge project name: bar
    Path: /home/frs/project/P/PR/PROJECT_UNIX_NAME/ 
        - Substitute your project UNIX name data for /P/PR/PROJECT_UNIX_NAME 
    

    服务器元素如下所示:

    <server>
      <id>sourceforge</id>
      <username>foo,bar</username>
      <password>secret</password>
    </server>
    

    您的 POM 中的 distributionManagement 部分如下所示:

    <!-- Enabling the use of FTP -->
    <distributionManagement>
      <repository>
        <id>ssh-repository</id>
        <url>
    scpexe://frs.sourceforge.net:/home/frs/project/P/PR/PROJECT_UNIX_NAME</url>
      </repository>
    </distributionManagement>
    

    最后声明要使用ssh-external:

    <build>
      <extensions>
        <extension>
          <groupId>org.apache.maven.wagon</groupId>
           <artifactId>wagon-ssh-external</artifactId>
           <version>1.0-alpha-5</version>
        </extension>
      </extensions>
    </build>
    

    如果这不起作用,您可以使用上面站点参考中推荐的方法,即使用您的用户名和项目组在 shell.sourceforge.net 上创建一个 shell:

    ssh -t <username>,<project name>@shell.sf.net create
    

    然后在 diestributionManagement 部分的站点 URL 中使用 shell.sourceforge.net(而不是 web.sourceforge.net):

    <url>scp://shell.sourceforge.net/home/frs/project/P/PR/PROJECT_UNIX_NAME/</url>
    

    【讨论】:

      【解决方案2】:

      我已将示例上传到 sourceforge.net:http://sf-mvn-plugins.sourceforge.net/example-1jar-thinlet/

      您可以通过 svn 查看它 - 这样您就可以了解如何使用插件上传和下载到 sourceforge.net 文件系统区域和网站。

      上传的要点是使用sftp:

      将此类似代码添加到您的 pom.xml 中

      <distributionManagement>
                      <!-- use the following if you're not using a snapshot version. -->
                      <repository>
                          <id>sourceforge-sf-mvn-plugins</id>
                          <name>FRS Area</name>
                          <uniqueVersion>false</uniqueVersion>
                          <url>sftp://web.sourceforge.net/home/frs/project/s/sf/sf-mvn-plugins/m2-repo</url>
                      </repository>
                      <site>
                          <id>sourceforge-sf-mvn-plugins</id>
                          <name>Web Area</name>
                          <url>
                              sftp://web.sourceforge.net/home/groups/s/sf/sf-mvn-plugins/htdocs/${artifactId}
                          </url>
                      </site>
      </distributionManagement>
      

      在settings.xml中添加类似的代码

         <server>
            <id>sourceforge-sf-mvn-plugins-svn</id>
            <username>tmichel,sf-mvn-plugins</username>
            <password>secret</password>
          </server>
      
          <server>
            <id>sourceforge-sf-mvn-plugins</id>
            <username>user,project</username>
            <password>secret</password>
          </server>
      

      下载的要点是使用 wagon-http-sourceforge maven 插件 - 请参阅:sf-mvn-plugins.sourceforge.net/wagon-http-sourceforge/FAQ.html

      请将以下代码添加到您的 pom.xml 中

          <repositories>
              <repository>
                  <id>sourceforge-svn</id>
                  <name>SF Maven Plugin SVN Repository</name>
                  <url>http://sf-mvn-plugins.svn.sourceforge.net/svnroot/sf-mvn-plugins/_m2-repo/trunk</url>
              </repository>
          </repositories>
      
      
          <pluginRepositories>
              <pluginRepository>
                  <id>sourceforge-frs</id>
                  <name>SF Maven Plugin Repository</name>
                  <url>http://sourceforge.net/projects/sf-mvn-plugins/files/m2-repo</url>
              </pluginRepository>
          </pluginRepositories>
      
          <build>
          <extensions>
              <extension>
                  <groupId>net.sf.maven.plugins</groupId>
                  <artifactId>wagon-http-sourceforge</artifactId>
                  <version>0.4</version>
              </extension>
          </extensions>
         :
         </build>
      

      【讨论】:

        【解决方案3】:

        看来我得自己写了。

        https://sourceforge.net/projects/wagon-sf/

        【讨论】:

          【解决方案4】:

          在尝试了很多次之后,我终于让它工作了——使用 sftp not scp。这应该在 unix 机器(或 Mac)上工作——我不确定 Windoze 的 sftp 客户端。我使用的是 mvn 2.2.0 版,我认为我没有安装任何特殊插件。这会将各种 mvn 包部署到我的项目页面的文件部分。

          您需要在设置中更改以下内容才能使其正常工作:

          • user -- 替换为您的 sourceforce 用户名
          • secret -- 替换为您的密码
          • ormlite -- 替换为您的项目名称
          • /o/or/ -- 替换为项目名称的第一个字符和前两个字符

          在我的 $HOME/.m2/settings.xml 文件中,SF 服务器有以下内容:

          <server>
            <id>sourceforge</id>
            <password>secret</password>
            <filePermissions>775</filePermissions>
            <directoryPermissions>775</directoryPermissions>
          </server>
          

          我没有在 settings.xml 文件中指定用户名,因为它需要是用户名,项目,并且我想将多个包部署到 SF。然后,在我的 ormlite 包的 pom.xml 文件中,我有以下内容:

          <distributionManagement>
           <repository>
            <id>sourceforge</id>
            <name>SourceForge</name>
            <url>sftp://user,ormlite@frs.sourceforge.net:/home/frs/project/o/or/ormlite/releases
            </url>
           </repository>
           <snapshotRepository>
            <id>sourceforge</id>
            <name>SourceForge</name>
            <url>sftp://user,ormlite@frs.sourceforge.net:/home/frs/project/o/or/ormlite/snapshots
            </url>
           </snapshotRepository>
          </distributionManagement>
          

          显然 /releases 和 /snapshots 目录后缀可以根据您的文件层次结构进行更改。

          【讨论】:

            【解决方案5】:

            其中 timp = 用户和 webmacro = 项目

            scp 网址不起作用:

            scp://timp,webmacro@shell.sourceforge.net:/home/groups/w/we/webmacro/htdocs/maven2/
            

            sftp 网址有效:

             sftp://timp,webmacro@web.sourceforge.net:/home/groups/w/we/webmacro/htdocs/maven2
            

            或者对于项目发布工件:

            sftp://timp,webmacro@web.sourceforge.net:/home/frs/project/w/we/webmacro/releases
            

            scp 将适用于 shell.sourceforge.net,但您必须在与

            一起使用之前创建 shell
            ssh -t timp,webmacro@shell.sourceforge.net create
            

            【讨论】:

              【解决方案6】:

              这真的没有那么难。首先,我让 mvn site:deploy 按照this sourceforge site 的说明工作。基本上你用

              启动 sourceforge shell
              ssh -t user,project@shell.sourceforge.net create
              

              这将在它们的末尾创建一个外壳,其中一个文件夹安装到您的项目的路径上,例如(取决于您的项目名称):

              /home/groups/c/ch/chex4j/
              

              在那个shell中,我在sourceforge服务器上为我的repo在项目apache文件夹“htdocs”下创建了一个文件夹

              mkdir /home/groups/c/ch/chex4j/htdocs/maven2
              

              在我的 settings.xml 中,我将用户名和密码设置为那个 shell 服务器,以便 maven 可以登录:

              <settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
                xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
                xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0
                                    http://maven.apache.org/xsd/settings-1.0.0.xsd/"> 
                <servers>
                      <server>
                          <id>chex4j.sf.net</id>
                          <username>me,myproject</username>
                          <password>password</password>
                          <filePermissions>775</filePermissions>
                          <directoryPermissions>775</directoryPermissions>
                      </server>
                  </servers>
              </settings>
              

              在 pom.xml 中,您只需要设置 distibutionManagement 部分,即可通过您在设置文件中设置密码的 ID 来命名服务器:

              <distributionManagement>
                  <site>
                      <id>chex4j.sf.net</id>
                      <url>scp://shell.sourceforge.net/home/groups/c/ch/chex4j/htdocs/
                      </url>
                  </site>
                  <repository>
                      <id>chex4j.sf.net</id>
                      <name>SourceForge shell repo</name>
                      <url>scp://shell.sourceforge.net/home/groups/c/ch/chex4j/htdocs/maven2</url>
                  </repository>
              </distributionManagement>
              

              存储库条目是 mvn deploy 命令的条目,站点条目是 mvn site:deploy 命令的条目。然后我要做的就是启动 shell 连接以启动服务器端,然后在我的本地端运行:

              mvn deploy
              

              它将 jar、pom 和源等上传到我的 sourceforge 项目网站。如果您尝试访问项目网站 sourceforge 上的 /maven2 文件夹,请告诉您目录列表默认关闭以及如何修复它。要在服务器 shell 上执行此操作,您需要在 htdocs/maven2 文件夹中创建一个 .htaccess 文件,其中包含以下 apache 选项

              Options +Indexes
              

              然后宾果游戏,你有一个看起来像这样的maven repo:

              http://chex4j.sourceforge.net/maven2/net/sf/chex4j/chex4j-core/1.0.0/

              你的 sf.net shell 会在几个小时后关闭以不占用资源;因此,当您想要部署站点或构建工件时,您可以运行“ssh -t ... create”。

              你可以在sourceforge下浏览我所有的maven项目代码来查看我的工作设置:

              http://chex4j.svn.sourceforge.net/viewvc/chex4j/branches/1.0.x/chex4j-core/

              【讨论】:

                【解决方案7】:

                SCP URL确实有效。但不要在服务器名称后使用“:”。 MVN 尝试将以下测试读取为整数(端口号)。

                您不需要像 simbo1905 那样建立隧道。

                【讨论】:

                  【解决方案8】:

                  Maven SourceForge 插件不适用于 Maven 2。另外我相信这个插件使用了不再支持的 FTP。

                  【讨论】:

                    【解决方案9】:

                    我发现CruiseControl 可以将版本上传到 SFEE,也可以与 Maven 和 Maven2 一起使用

                    【讨论】:

                      猜你喜欢
                      • 2012-04-15
                      • 1970-01-01
                      • 2022-07-25
                      • 1970-01-01
                      • 2023-04-08
                      • 1970-01-01
                      • 1970-01-01
                      • 1970-01-01
                      • 1970-01-01
                      相关资源
                      最近更新 更多