我正在为一些开源项目使用SourceForge,我想自动部署到SourceForge文件发布系统的版本。我使用Maven进行构建,除非你做一些手动准备工作,否则标准的SFTP部署机制似乎不起作用。我在其他论坛上发现了一些旧帖子,建议唯一的方法是专门为SourceForge写一个Wagon。
有人最近有这方面的经验吗?
答案 0 :(得分:9)
我无法对此进行测试以确认,但我相信无需编写任何插件即可。
您可以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部分的网站网址中使用shell.sourceforge.net(而不是web.sourceforge.net):
<url>scp://shell.sourceforge.net/home/frs/project/P/PR/PROJECT_UNIX_NAME/</url>
答案 1 :(得分: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>
答案 2 :(得分:2)
看起来我将不得不自己写这篇文章。
答案 3 :(得分:1)
经过多次尝试后,我终于开始工作了 - 使用 sftp 而不是 scp。这应该来自unix盒(或Mac) - 我不确定Windoze的sftp客户端。我使用的是mvn 2.2.0版本,我认为我没有安装任何特殊的插件。这会将各种mvn包部署到我的项目页面的Files部分。
您需要在设置中更改以下内容才能使其正常工作:
在我的$ 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目录后缀可以根据文件层次结构进行更改。
答案 4 :(得分:1)
其中timp = user和webmacro = project
scp网址不起作用:
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,但您必须在使用
之前创建shellssh -t timp,webmacro@shell.sourceforge.net create
答案 5 :(得分:1)
这真的不是那么难。首先我有mvn网站:按照this sourceforge site的说明部署工作。基本上你用
启动sourceforge shellssh -t user,project@shell.sourceforge.net create
这将在他们的末尾创建一个shell,在一个路径上安装一个文件夹,例如(取决于你的项目名称):
/home/groups/c/ch/chex4j/
在那个shell中我在sourceforge服务器上我在项目apache文件夹“htdocs”下用
创建了一个我的repo的文件夹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和sources等上传到我的sourceforge项目网站。如果您尝试点击项目网站上的/ maven2文件夹,请告诉您默认关闭目录列表以及如何修复它。要在服务器shell上执行此操作,请在包含以下apache选项的htdocs / maven2文件夹中创建.htaccess文件
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/
答案 6 :(得分:1)
SCP网址 工作。但是不要在服务器名称后面使用“:”。 MAVEN尝试将以下测试读作整数(端口号)。
您不需要像simbo 1905那样建立隧道。
答案 7 :(得分:0)
Maven SourceForge插件不能与Maven 2一起使用。另外我相信这个插件使用不再受支持的FTP。
答案 8 :(得分:0)
我发现CruiseControl可以将版本上传到SFEE,也适用于Maven和Maven2