2013-01-03 31 views
4

版本:行家3.0.4,釋放插件2.4.0行家釋放多模塊插件,具有不同SCM標籤和版本

的目標是使用行家在一個步驟中以釋放多個特徵(項目)發佈插件,並以非交互方式。我使用:http://maven.apache.org/maven-release/maven-release-plugin/examples/non-interactive-release.html

SVN結構:

http://host/svn/feature1/trunk | tags | branches 
http://host/svn/feature2/trunk | tags | branches 
http://host/svn/feature3/trunk | tags | branches 

每個要素都有一個pom.xml,具有特定的版本名稱和SCM的URL部分。

有了這個結構,我希望在一個步驟中發佈所有功能(超過12個功能,以及它們之間的依賴關係......)。我的想法是行家反應器插件可以幫助我很多,部署和釋放所有以正確的順序;-)然後,我創建了「構建/組件」項目在SVN分支,具有以下SVN的外部:

feature1 http://host/svn/feature1/trunk 
feature2 http://host/svn/feature2/trunk 
... 

使用svn externals的目標是要有一個平坦的工作區(它避免了Maven發佈插件的問題...)。在這個構建項目中,我只有一個pom.xml,所有功能的多項目聚合器。

<modules> 
    <module>feature1</module> 
    <module>feature2</module> 
    <module>feature3</module> 
    ... 
</modules> 

然後我用maven發佈命令

mvn -B release:clean release:prepare release:perform 

具有以下release.properties

project.rel.org.sample.test\:feature1=1.0.0-RC1 
project.dev.org.sample.test\:feature1=1.0.0-RC2-SNAPSHOT 
project.scm.org.sample.test\:feature1.developerConnection=scm\:svn\:http\://host/svn/feature1/trunk 
project.scm.org.sample.test\:feature1.connection=scm\:svn\:http\://host/svn/feature1/trunk 

project.rel.org.sample.test\:feature2=1.0.0-RC1 
project.dev.org.sample.test\:feature2=1.0.0-RC2-SNAPSHOT 
... 

有了這個文件,和-B的說法,也沒有必要的交互式輸入,向用戶詢問功能版本。因此,這項工作可以使用詹金斯推出:d ...

在此步驟:

  • SCM COMMITED變化都OK(SCM URL和版本)
  • 僞影以及部署
  • 但未在SVN創建功能SCM標籤...

只有已經進行根編譯/組裝項目的SCM標籤...

[INFO] [INFO] ------------------------------------------------------------------------ 
[INFO] [INFO] Reactor Summary: 
[INFO] [INFO] 
[INFO] [INFO] build ..................................... SUCCESS [1.104s] 
[INFO] [INFO] feature1 .................................. SUCCESS [0.187s] 
[INFO] [INFO] feature2 .................................. SUCCESS [0.648s] 
[INFO] [INFO] feature3 .................................. SUCCESS [0.370s] 
[INFO] [INFO] ------------------------------------------------------------------------ 
[INFO] [INFO] BUILD SUCCESS 
[INFO] [INFO] ------------------------------------------------------------------------ 
[INFO] [INFO] Total time: 2.552s 
[INFO] [INFO] Finished at: Thu Jan 03 14:45:37 CET 2013 
[INFO] [INFO] Final Memory: 9M/22M 
[INFO] [INFO] ------------------------------------------------------------------------ 
[INFO] Cleaning up after release... 
[INFO] ------------------------------------------------------------------------ 
[INFO] Reactor Summary: 
[INFO] 
[INFO] build ............................................. SUCCESS [7.201s] 
[INFO] feature1 .......................................... SKIPPED 
[INFO] feature2 .......................................... SKIPPED 
[INFO] feature3 .......................................... SKIPPED 
[INFO] ------------------------------------------------------------------------ 
[INFO] BUILD SUCCESS 
[INFO] ------------------------------------------------------------------------ 

的功能跳過的狀態在總結似乎有些奇怪(但它是commiting和清潔階段SUCCESS)

這個問題不是很容易解釋,我希望能夠明確...

有沒有人遇到同樣的問題? 解決這個問題的一些技巧/信息?

回答

2

它進入我的腦海裏的第一件事就是在SVN使用的外部是這樣的:

feature1 http://host/svn/feature1/trunk 
feature2 http://host/svn/feature2/trunk 
... 

將產生不可複製在所有的狀態,導致行李箱將在未來發生改變,所以你可以」重新創建這個確切的狀態。而且,maven-release-plugin只會爲根部分(aggegration pom)做一個標記是正確的。另一方面,在與外部的關係中應該阻止使用絕對URL。

除了上面這個,聽起來像你正在使用SVN作爲依賴管理工具,這不是它的目的,因爲Maven是爲這樣的事情設計的,特別是如果你有這些功能之間的關係,聽起來不像它的聲音更像模塊而不是功能。那結果是,你應該改變你的結構:

+-- root (pom.xml with modules list) 
     +--- module-1 (pom.xml) 
     +--- module-2 (pom.xml) 
     +--- module-3 (pom.xml) 
     +--- module-4 (pom.xml) 
     ... 

和SVN你必須把根文件夾到項目的軀幹和僅定義根pom.xml文件一個單片機ARA。這被稱爲多模塊構建,它可以處理模塊之間的依賴關係,並且會按照正確的順序對反應器進行排序。

+0

如果一切正常,我打算在我的svn外部配置中使用修訂號,以使我的構建和源代碼管理具有靜態狀態。我並不完全贊同你的評論:在我的例子中,svn externals不是用於依賴管理,而是用於構建和組裝目的(你可以在多個分支中看到產品的構建是一個功能集合)。我嘗試使用maven來解決依賴管理工作並使用平面工作區。好的絕對url建議,thx你。 – jraduget

+0

該組件也可以由Maven解決,這意味着可以通過Maven項目組合的版本中具有不同的模塊/功能;-)。但有不同的分支HM ......但正如我所提到的,我會建議使用多模塊版本,你可以發佈等功能可以在一個分支上開發,併合併到像樹幹等發佈整合線。所以,你避免不好的外部。 – khmarbaise