代码之家  ›  专栏  ›  技术社区  ›  Brian Matthews

如何将Maven构建中的构件部署到SourceForge文件发布系统?

  •  11
  • Brian Matthews  · 技术社区  · 17 年前

    我正在为一些开放源代码项目使用sourceforge,我想自动将版本部署到sourceforge文件发布系统。我在构建中使用maven,标准的sftp部署机制似乎不起作用,除非您做一些手工准备工作。我在其他论坛上看到过一些旧的帖子,建议唯一的方法是专门为SourceForge编写一个旅行车。

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

    9 回复  |  直到 15 年前
        1
  •  9
  •   Rich Seller    16 年前

    我无法测试这一点,但我相信这是不可能编写任何插件。

    你可以 deploy to SourceForge using SCP 和maven deploy插件可以配置为 use SCP 所以它应该起作用。您还可以部署 site to SourceForge 通过SCP。

    您将在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元素如下所示:

    <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
  •  3
  •   Huluvu424242    16 年前

    我已经上传了一个示例到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
  •  2
  •   Brian Matthews    17 年前

    看来我得自己写这个了。

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

        4
  •  1
  •   Gray droiddeveloper    16 年前

    在尝试了很多次之后,我终于让它起作用了 SFTP SCP。这应该在一个Unix机器(或Mac)上工作——我不确定windoze的sftp客户机。我使用的是MVN 2.2.0版,我想我没有安装任何特殊的插件。这会将各种MVN包部署到“我的项目”页面的“文件”部分。

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

    • 用户--替换为sourceforce用户名
    • 秘密--替换为密码
    • ORMLite——替换为项目名称
    • /o/或/--替换为项目名称的第一个字符和前2个字符

    在$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
  •  1
  •   TimP    16 年前

    其中timp=user和webmacro=project

    SCP URL不工作:

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

    SFTP URL作品:

     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
  •  1
  •   simbo1905    15 年前

    事实证明这并不难。首先,我有了MVN站点:按照中的说明部署工作 this sourceforge site . 基本上,您可以使用

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

    这将在其末尾创建shell,并在路径(取决于项目名称)上将文件夹装载到项目中:

    /home/groups/c/ch/chex4j/
    

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

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

    在my 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中,您只需要DistributionManagement部分的设置就可以按设置文件中为其设置密码的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>
    

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

    mvn deploy
    

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

    Options +Indexes
    

    然后,宾果,你有一个Maven回购,看起来像:

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

    你的sf.net shell会在几个小时后关闭,以避免占用资源;所以你运行“ssh-t…创建“当您想要部署站点或构建工件时。

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

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

        7
  •  1
  •   JPT    15 年前

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

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

        8
  •  0
  •   Brian Matthews    17 年前

    Maven SourceForge插件不适用于Maven2。另外,我相信这个插件使用了不再受支持的ftp。

        9
  •  0
  •   binco    17 年前

    我发现 CruiseControl 可以将版本上传到sfee,也可以与maven和maven2一起使用