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

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

有帮助吗?

解决方案

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

你可以 使用 SCP 部署到 SourceForge, ,并且 maven-deploy-plugin 可以配置为 使用SCP 所以它应该有效。您还可以部署您的 站点到 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>
  <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>

其他提示

我已将示例上传到 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>

看来我得自己写这个了。

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

经过多次尝试后,我终于让它发挥作用了—— sftp 不是 SCP。这应该可以在 unix 机器(或 Mac)上运行——我不确定 Windoze 的 sftp 客户端。我正在使用 mvn 版本 2.2.0,我认为我没有安装任何特殊插件。这会将各种 mvn 包部署到我的项目页面的“文件”部分。

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

  • user -- 替换为您的 sourceforce 用户名
  • Secret -- 替换为您的密码
  • ormlite -- 替换为你的项目名称
  • /o/or/ -- 替换为项目名称的第一个字符和前 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 目录后缀可以根据您的文件层次结构进行更改。

其中 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

这实际上并没有那么难。首先,我有 mvn site:deploy 按照以下说明进行工作 这个sourceforge网站. 。基本上你可以用以下命令启动sourceforge shell

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

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

/home/groups/c/ch/chex4j/

在该 shell 中,我在 sourceforge 服务器上的项目 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 存储库,如下所示:

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/

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

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

Maven SourceForge 插件不适用于 Maven 2。另外,我相信该插件使用不再受支持的 FTP。

我找到 巡航控制 可以将版本上传到 SFEE,也可以与 Maven 和 Maven2 配合使用

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top