版本:行家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)
這個問題不是很容易解釋,我希望能夠明確...
有沒有人遇到同樣的問題? 解決這個問題的一些技巧/信息?
如果一切正常,我打算在我的svn外部配置中使用修訂號,以使我的構建和源代碼管理具有靜態狀態。我並不完全贊同你的評論:在我的例子中,svn externals不是用於依賴管理,而是用於構建和組裝目的(你可以在多個分支中看到產品的構建是一個功能集合)。我嘗試使用maven來解決依賴管理工作並使用平面工作區。好的絕對url建議,thx你。 – jraduget
該組件也可以由Maven解決,這意味着可以通過Maven項目組合的版本中具有不同的模塊/功能;-)。但有不同的分支HM ......但正如我所提到的,我會建議使用多模塊版本,你可以發佈等功能可以在一個分支上開發,併合併到像樹幹等發佈整合線。所以,你避免不好的外部。 – khmarbaise