我目前正在使用Maven tools for Project Dash。其中一個公開的問題是如何處理錯誤。Maven工件補丁版本
Maven中央說:沒有發佈任何變化。這是因爲Maven從不試圖弄清楚版本是否發生了變化(與SNAPSHOT不同)。
但是我可能必須創建一個新的「釋放」,比如說Eclipse 3.6.2的一部分。我應該使用哪個版本號? 3.6.2.1
,3.6.2-1
,3.6.2_1
,3.6.2pl1
?爲什麼?
我目前正在使用Maven tools for Project Dash。其中一個公開的問題是如何處理錯誤。Maven工件補丁版本
Maven中央說:沒有發佈任何變化。這是因爲Maven從不試圖弄清楚版本是否發生了變化(與SNAPSHOT不同)。
但是我可能必須創建一個新的「釋放」,比如說Eclipse 3.6.2的一部分。我應該使用哪個版本號? 3.6.2.1
,3.6.2-1
,3.6.2_1
,3.6.2pl1
?爲什麼?
版本號的約定是major.minor.build
。
major
在公共界面變化不一致時增加。例如,一個方法被刪除,或者其簽名改變。使用庫的客戶在使用具有不同主版本的庫時需要小心,因爲事情可能會中斷。
minor
在公共界面以兼容方式變化時遞增。例如,添加了一個方法。客戶不需要擔心使用新版本,因爲他們習慣看到的所有功能仍然存在並且行爲相同。
build
在函數的實現更改時遞增,但不添加或刪除簽名。例如,你發現了一個bug並修復了它。客戶應該更新到新版本,但如果因爲他們依賴於破壞的行爲而無法工作,他們可以輕鬆降級。
這裏棘手的問題是,它聽起來像你正在修改其他人編寫和發佈的代碼。正如我所看到的,這裏的慣例是使用-yourname-version
或僅僅 - version
來後綴版本號。例如,linux-image-2.6.28-27
是Ubuntu內核映像的可能名稱。
由於Maven使用破折號來區分工件座標,但是,我會建議(非常長時間地,顯然)添加.version
以避免混淆。所以在這種情況下3.6.2.1
。
Maven項目版本指定爲this。
<major version>.<minor version>.<incremental version>-<qualifier>
當你不想改變你正在尋找一個預選賽版本號。我不知道是否有關於限定詞名稱的一般性建議。春天的人,例如不喜歡的東西this
2.5.6.SEC01
2.5.6.SR02
3.0.0.M3
他們沒有使用連字符/破折號符號來單獨預選賽。
無論你做什麼,你必須小心有關版本的順序!看看我添加的第一個鏈接。
更新:也看看@ krzyk評論最近的變化/添加。
現在根據http://www.mojohaus.org/versions-maven-plugin/version-rules.html規則是'
@krzyk感謝您提及的變化。將留下我的答案,並添加一個不是你的評論。 – FrVaBe 2016-04-11 06:55:45
這是因爲Maven的從未嘗試 找出一個版本是否有 改變
這是在我看來不是根本原因。原因是未來有可靠的構建。你可以在你的pom中定義版本,就是這樣。如果有人從maven中心移除工件或者變得更糟,那麼改變現有的工件就不能確定你的構建將來會工作...或者更老的構建可以工作。
版本號取決於你...我會建議使用3.6.2.1。
很好的答案。我還建議閱讀關於語義版本控制的內容:http://semver.org/ – Nicholas 2013-03-26 08:57:10