簡體   English   中英

如何將Maven構建中的工件部署到SourceForge文件發布系統?

[英]How can I deploy artifacts from a Maven build to the SourceForge File Release System?

我正在使用SourceForge進行一些開源項目,我想自動部署到SourceForge文件發布系統的版本。 我使用Maven進行構建,除非你做一些手動准備工作,否則標准的SFTP部署機制似乎不起作用。 我在其他論壇上發現了一些舊帖子,建議唯一的方法是專門為SourceForge編寫一個Wagon。

有沒有人最近有這方面的經驗?

我無法對此進行測試以確認,但我相信無需編寫任何插件即可。

您可以使用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元素如下所示:

<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包部署到我的項目頁面的Files部分。

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

  • user - 替換為sourceforce用戶名
  • 秘密 - 用您的密碼替換
  • ormlite - 替換為您的項目名稱
  • / o /或/ - 替換項目名稱的第一個字符和前兩個字符

在我的$ 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 = 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,但你必須在使用之前創建shell

ssh -t timp,webmacro@shell.sourceforge.net create

這真的不是那么難。 首先我有mvn站點:按照sourceforge站點的說明部署工作。 基本上你用它啟動sourceforge shell

ssh -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上執行此操作,請在htdocs / maven2文件夾中創建包含以下apache選項的.htaccess文件

Options +Indexes

然后賓果游戲,你有一個maven回購,看起來像:

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/

SCP URL 確實有效。 但是不要在服務器名稱后面使用“:”。 MVN嘗試將以下測試作為整數(端口號)讀取。

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

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

我發現CruiseControl可以將版本上傳到SFEE,也可以與Maven和Maven2一起使用

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM