2008-08-19 204 views
11

我對SourceForge的一些開源項目使用SourceForge,我想自動將發佈部署到SourceForge文件發佈系統。我爲我的構建使用Maven,標準的SFTP部署機制似乎不起作用,除非您執行一些手動準備工作。我在其他論壇上發現了一些舊帖子,暗示唯一的方法是專門爲SourceForge編寫Wagon。如何將工件從Maven構建部署到SourceForge文件發佈系統?

有沒有人有任何近期的經驗呢?

回答

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-外部將被使用:

<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一個外殼,您的用戶名和項目組:

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

然後使用shell.sourceforge.net(而不是web.sourceforge.net)在您的網站的網址在diestributionManagement部分:

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

Maven SourceForge插件不能與Maven 2一起使用。我也相信這個插件使用不再支持的FTP。

1

這種嘗試多次後,我終於得到它的工作 - 與sftp不是 scp。這應該從unix box(或Mac)上運行 - 我不確定Windoze的sftp客戶端。我使用的是mvn 2.2.0版本,我認爲我沒有安裝任何特殊的插件。這將各種mvn包部署到我的項目頁面的Files部分。

你需要更改設置如下,以得到它的工作:

  • 用戶 - 與您的用戶名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,[email protected]:/home/frs/project/o/or/ormlite/releases 
    </url> 
</repository> 
<snapshotRepository> 
    <id>sourceforge</id> 
    <name>SourceForge</name> 
    <url>sftp://user,[email protected]:/home/frs/project/o/or/ormlite/snapshots 
    </url> 
</snapshotRepository> 
</distributionManagement> 

顯然目錄後綴可以根據您的文件層次結構進行更改/新聞稿及/快照。

1

其中TIMP =用戶和WebMacro中=項目

SCP URL不起作用:

scp://timp,[email protected]:/home/groups/w/we/webmacro/htdocs/maven2/ 

SFTP URL的工作原理:

sftp://timp,[email protected]:/home/groups/w/we/webmacro/htdocs/maven2 

或項目發佈假象:

sftp://timp,[email protected]:/home/frs/project/w/we/webmacro/releases 

scp will工作shell.sourceforge.net,但你必須創建使用前殼與

ssh -t timp,[email protected] create 
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> 

主要點下載使用貨車-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> 
1

這真的沒有變成是那麼難。首先,我有了mvn站點:按照this sourceforge site的說明部署工作。基本上你開始

ssh -t user,[email protected] create 

SourceForge的外殼採用了文件夾安裝到您的項目的路徑上,將在他們的最終打造外殼,如(取決於你的項目名稱):

/home/groups/c/ch/chex4j/ 

在殼牌我SourceForge的服務器上我創建了一個文件夾,我的下項目apache的文件夾「的htdocs」回購與

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

在我的settings.xml我設置爲SH用戶名和密碼ELL服務器,以便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站點:deploy命令。然後,所有我需要做的就是啓動外殼連接,彈出服務器端,然後在我的本地端只需要運行:

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 ... create」。

您可以瀏覽我所有的Maven項目的代碼在SourceForge上看到我的工作設置:

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

1

SCP URL 確實工作。但不要在服務器名稱後面使用「:」。 MVN嘗試讀取以下測試作爲整數(端口號)。

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

相關問題