2009-06-13 87 views
7

當我們發佈項目時,它通常每次都是一樣的。是否有任何參數或屬性可以添加到發佈中:準備好允許在批處理模式下發布模式?Maven發佈屬性

例子:

 
What is the release version for "MyProject"? (company.jar.site:myproject) 0.0.1: : 
What is SCM release tag or label for "MyProject"? (company.jar.site:myproject) MyProject-0.0.1: : 
What is the new development version for "MyProject"? (company.jar.site:myproject) 0.0.2-SNAPSHOT: : 

這將是很好做這樣的事情:

 
mvn -B release:perform -DreleaseVersion:$nextMinorVersion$ or 
mvn -B release:perform -DreleaseVersion:$nextPatchVersion$ or 
mvn -B release:perform -Dtag:v$nextPatchVersion$ or 
mvn -B release:perform -Dtag:v$nextPatchVersion$-someCustomNaming 

如果這樣的事情不存在,我將創建一個自定義的Mojo這樣做。

另外,根據提示在上面我們平時默認爲第一個問題,「V」第二+當前版本,並在最後一個次。如果我們能夠以某種方式修改這些,那將解決眼前的問題。

在此先感謝。

回答

7
mvn -B release:prepare release:perform 

-B爲批處理模式,它將使用它在非批處理模式下提供的默認值。通常對於X.Y.Z-SNAPSHOT,它執行X.Y.Z版本並將新快照設置爲X.Y.(Z + 1)-SNAPSHOT。

正如所有的東西行家,你可以打這個命名約定,並有大量的頭痛,或讓步,決定你的版本和標籤將是maven的方式獲得大量免費的。我打了它,並輸了。如果你打算使用它,只需將其中的許多方法完全交給maven即可。

我完全樂意如此做,想強加給我自己的方案通常不是反正一個好主意。

+0

與此唯一的問題是,我平時想改變提供的標籤名稱。因爲我的父級artifactId通常是「foo-parent」,我希望標籤是foo-1.2.3而不是foo-parent-1.2.3。 – 2009-06-15 10:03:13

2

部分答案,你comment後:

要更改標籤名稱,使用-Dtag=xxx參數release:prepare。詳情請參閱the release:prepare documentation

未經測試的代碼警告

要在一個完全自動化的方式做到這一點,你需要一個配置項添加到您的pom.xml,你將設置標籤名稱:

<maven-release-plugin> 
    <configuration> 
     <tag>parent-${releaseVersion}</tag> 
    </configuration> 
</maven-release-plugin> 
1

的我已經完成的方式是Performing a Non-interactive Release Using a properties file

您創建的聚合項目(有包裝的一個:POM)的根release.properties併爲每個項目添加以下形式的兩個屬性:

project.rel.<groupId>\:<artifactId>=<releaseVersion> 
project.dev.<groupId>\:<artifactId>=<nextSnapshotVersion> 

,如果你想使用特定的文字爲你的標籤添加以下屬性

scm.tag=<tagLiteral> 

以下是其中兩個事情完成(指定每個模塊的版本並確定了將使用的單片機來標記文字)的例子:

scm.tag=my-project-0.2.1 
project.rel.org.monachus.monkeyisland\:my-project=0.2.1 
project.dev.org.monachus.monkeyisland\:my-project=0.2.2-SNAPSHOT 
project.rel.org.monachus.monkeyisland\:module-a=0.1.1 
project.dev.org.monachus.monkeyisland\:module-a=0.1.2-SNAPSHOT