2010-06-03 50 views
1

有沒有方法可以在POM文件之外指定工件版本?在pom之外指定工件版本

我有2個構建工件的CI工程。一個從'develop'分支建立一個「穩定的」開發版本,另一個建立一個不穩定的版本,這個版本是將所有活動的特性分支合併到開發分支的結果。我希望將穩定版本構建爲xyz-1.0.jar,並將集成構建作爲xyz-1.0-SNAPSHOT.jar進行構建。有沒有辦法讓CI作業運行maven任務或通過命令行指定是否應該構建發佈或快照jar而無需手動修改POM?目前我有在POM中指定爲1.0的版本。我考慮過使用發佈插件,但我不希望自動版本號增加和標記它。

回答

1

簡短的回答:沒有。這裏有一些補充說明:

  • 它沒有多大意義,用「釋放」的版本(即非快照)根據CI的一個分支,因爲發佈版本不會再即使新版本下載可用。
  • 發佈的版本應該被標記(例如1.0),維護完成在從標記派生的分支(例如1.0.1-SNAPSHOT)中。
  • 如果您想區分從不同分支構建的版本,請在POM中使用不同的版本。
+0

在maven配置文件中,我將updatePolicy設置爲始終爲開發版本回購。即使在非SNAPSHOT的情況下,它應該始終檢查更新的版本,否? – 2010-06-03 18:35:42

+0

小背景下,我們有50-60個相互依存的瓶子,它們經常變化和釋放。我試圖避免不斷碰撞版本號,因爲那時你必須去更新幾十個POM。只有當引入了一個改變來打破兼容性時,版本纔會增加。 – 2010-06-03 18:50:47

+0

@亞當第一條評論:不,原文在發佈後不應該改變。您必須手動複製/刪除文件。第二條評論:是的,我明白這一點,我同意最後一句話。對於第一部分來說,這就是爲什麼release插件很方便(它會爲您升級版本號)。 – 2010-06-03 19:24:37

0

你應該能夠做到這一點使用maven profiles

1

我能夠通過在我的POM中使用一個屬性來實現這一點,然後通過命令行覆蓋它。

的pom.xml:

... 
    <version>${artifactVersion}</version> 
    <properties> 
     <artifactVersion>1.0</artifactVersion> <!-- default version --> 
    </properties> 
    ... 

然後用mvn -DartifactVersion=1.0-SNAPSHOT package

覆蓋但上述帕斯卡的回答是更符合我的深意。我的解決方案更多地是我感覺的解決方法。

+0

我不確定這將與繼承一起工作(這就是爲什麼我沒有建議它)。 – 2010-06-03 19:07:32