2012-09-12 24 views
6

我從TeamCity運行maven構建,並利用build.vcs.number將Subversion修訂版寫入我的清單。在任何Maven構建與Subversion作爲VCS,TeamCity的增加在Maven發佈期間丟失的屬性:執行

-Dbuild.vcs.number=1234 

到maven的命令行,其中1234是在分支的最新版本正在建設中。

然後在我的pom.xml中,我有

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-jar-plugin</artifactId> 
    <configuration> 
     <archive> 
      <manifest> 
       <addDefaultSpecificationEntries>true</addDefaultSpecificationEntries> 
       <addDefaultImplementationEntries>true</addDefaultImplementationEntries> 
      </manifest> 
      <manifestEntries> 
       <build>${build.vcs.number}</build> 
      </manifestEntries> 
     </archive> 
    </configuration> 
</plugin> 

這一切,直到我運行Maven發行工作正常:(從TeamCity的也可以)執行,在這一點$ {} build.vcs.number成爲空,儘管我可以在TeamCity構建日誌中看到該屬性是通過命令行傳入的。

maven-release-plugin文檔暗示Maven在執行目標期間的某個點運行分叉進程 - 這就是爲什麼我有這個問題嗎?

有沒有一種方法可以確保此特定屬性通過該分叉過程?

回答

4
-Darguments=-Dbuild.vcs.number=1234 

有一個釋放分叉進程,以確保它有一個乾淨的可重現的命令行,因此您需要指定要通過的內容。

理想情況下,您可以在您的Pom上配置release插件來傳遞屬性,但如果失敗,請使用覆蓋(除非有人已禁用Pom中的覆蓋...直到您重新啓用它爲止。

注意:密切關注報價是否有多個屬性或屬性中有空格

+0

啊輝煌,正是我所期待的。 – RCross