22

我們使用Hudson和maven-release-plugin來完成發佈版本。現在我有一個包含assembly的項目,它將所有需要的組件放在一起,然後將它們打包到具有所需目錄結構的.tar.gz包中。使用maven-release-plugin部署彙編包

現在我試圖讓release-plugin在release:perform目標中將這個包部署到我們的Maven倉庫,但只部署了標準的東西(sources,javadoc,POM)。

我已經將程序集目標綁定到maven包階段,並且.tar.gz在發佈期間獲取構建,但未上傳到存儲庫。任何暗示我在這裏做錯了什麼?

這裏是組裝插件配置:

<plugin> 
    <artifactId>maven-assembly-plugin</artifactId> 
    <version>2.2-beta-4</version> 
    <configuration> 
     <descriptors> 
     <descriptor>src/main/assembly/distribution.xml</descriptor> 
     </descriptors> 
     <finalName>${pom.artifactId}-${pom.version}</finalName> 
     <appendAssemblyId>false</appendAssemblyId> 
     <tarLongFileMode>warn</tarLongFileMode> 
    </configuration> 
    <executions> 
     <execution> 
      <id>dist-assembly</id> 
      <phase>package</phase> 
      <goals> 
       <goal>assembly</goal> 
      </goals> 
     </execution> 
    </executions> 
</plugin> 

我運行建立一個版本是

mvn release:prepare release:perform release:clean 
+0

也許如果你告訴我們的代碼,或混淆代碼,我們也許能幫助你 – ant 2010-02-11 12:29:16

回答

33

與此同時,我發現了兩種做我想做的方式。

Maven的建造輔助性插件,允許更多的條目添加到文物的清單應部署:

<plugin> 
     <groupId>org.codehaus.mojo</groupId> 
     <artifactId>build-helper-maven-plugin</artifactId> 
     <version>1.3</version> 
     <executions> 
      <execution> 
      <id>attach-distribution</id> 
      <phase>package</phase> 
      <goals> 
       <goal>attach-artifact</goal> 
      </goals> 
      <configuration> 
       <artifacts> 
       <artifact> 
        <file>target/${pom.artifactId}-${pom.version}.tar.gz</file> 
        <type>tar.gz</type> 
       </artifact> 
       </artifacts> 
      </configuration> 
      </execution> 
     </executions> 
     </plugin> 

另一種是因爲它得到一樣簡單,有人在Maven的用戶郵件列表指出了這一點。簡單地使用裝配:單個目標而不是asssembly:裝配。通過這種方式,在部署階段將生成的工件上傳到存儲庫。

<execution> 
     <id>dist-assembly</id> 
     <phase>package</phase> 
     <goals> 
      <goal>single</goal> <!-- that's all :) --> 
     </goals> 
    </execution> 
+0

羞愧插件不允許您重新定義工件ID – Adam 2016-05-25 16:38:31

1

部署文件中的命令不釋放插件的一部分部署的插件,但(版本不會自行在任何地方部署東西,但您可以配置在發佈期間調用的部署插件)。

通常,部署插件會將所有工件部署到遠程存儲庫,但部件不是工件; Maven無法以任何方式在其存儲庫中使用.tar.gz存檔,所以首先部署它們是沒有意義的。

如果您堅持要將無用的文件複製到存儲庫中,則必須使用deploy:deploy-filesee the docs)手動部署文件並使用執行配置插件以在發佈步驟中調用該文件。但我仍然反對這個建議。

您可能正在尋找的是自動上傳程序集的方式。我不知道有這樣做的插件。

+0

THX,那是我在此刻的樣子,雖然我還沒有得到它現在的工作。但根據所有信息,我發現如果想要將.tar.gz文件上傳到存儲庫,似乎是(只有)方法。 – 2010-02-11 14:48:40

+0

再堅持將無用的文件複製到回購站 - maven不是使用存儲庫的唯一工具。 * .tar.gz文件被許多其他打包工具使用,例如, apt,puppet等 – Adam 2016-05-25 16:45:58

+0

@Adam,但這些工具有自己的存儲庫,並且通常不能使用Maven存儲庫。所以將它上傳到Puppet倉庫是非常有意義的,但不能用於Maven倉庫。 – 2016-05-27 11:33:02