12

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

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

4

9 回答 9

10

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

您可以使用 SCP 部署到 SourceForge,并且可以将 maven-deploy-plugin 配置为使用 SCP,因此它应该可以工作。您还可以通过 SCP将您的站点部署到 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>
于 2009-09-19T21:33:10.380 回答
3

我已将示例上传到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>
于 2010-02-25T20:45:06.287 回答
2

看来我得自己写这个了。

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

于 2008-09-06T03:03:03.723 回答
1

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

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

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

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

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

我没有在 settings.xml 文件中指定用户名,因为它需要是 username,project 并且我想将多个包部署到 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 目录后缀可以根据您的文件层次结构进行更改。

于 2010-02-02T20:41:52.180 回答
1

其中 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
于 2010-02-25T00:57:50.827 回答
1

这真的没有那么难。首先,我有 mvn site:deploy 按照此 sourceforge 站点上的说明工作。基本上你启动 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 文件夹,请告诉您目录列表默认关闭以及如何修复它。要在服务器外壳上执行此操作,您在 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/

于 2010-11-05T21:12:38.720 回答
1

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

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

于 2010-12-09T19:52:08.020 回答
0

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

于 2008-08-20T11:36:44.970 回答
0

我发现CruiseControl可以将发布上传到 SFEE,并且还可以与 Maven 和 Maven2 一起使用

于 2008-10-09T12:27:44.540 回答