2011-03-18 81 views
5

我目前正在使用Maven tools for Project Dash。其中一個公開的問題是如何處理錯誤。Maven工件補丁版本

Maven中央說:沒有發佈任何變化。這是因爲Maven從不試圖弄清楚版本是否發生了變化(與SNAPSHOT不同)。

但是我可能必須創建一個新的「釋放」,比如說Eclipse 3.6.2的一部分。我應該使用哪個版本號? 3.6.2.13.6.2-1,3.6.2_1,3.6.2pl1?爲什麼?

回答

9

版本號的約定是major.minor.build

major在公共界面變化不一致時增加。例如,一個方法被刪除,或者其簽名改變。使用庫的客戶在使用具有不同主版本的庫時需要小心,因爲事情可能會中斷。

minor在公共界面以兼容方式變化時遞增。例如,添加了一個方法。客戶不需要擔心使用新版本,因爲他們習慣看到的所有功能仍然存在並且行爲相同。

build在函數的實現更改時遞增,但不添加或刪除簽名。例如,你發現了一個bug並修復了它。客戶應該更新到新版本,但如果因爲他們依賴於破壞的行爲而無法工作,他們可以輕鬆降級。

這裏棘手的問題是,它聽起來像你正在修改其他人編寫和發佈的代碼。正如我所看到的,這裏的慣例是使用-yourname-version或僅僅 - version來後綴版本號。例如,linux-image-2.6.28-27是Ubuntu內核映像的可能名稱。

由於Maven使用破折號來區分工件座標,但是,我會建議(非常長時間地,顯然)添加.version以避免混淆。所以在這種情況下3.6.2.1

+1

很好的答案。我還建議閱讀關於語義版本控制的內容:http://semver.org/ – Nicholas 2013-03-26 08:57:10

0

Maven項目版本指定爲this

<major version>.<minor version>.<incremental version>-<qualifier> 

當你不想改變你正在尋找一個預選賽版本號。我不知道是否有關於限定詞名稱的一般性建議。春天的人,例如不喜歡的東西this

2.5.6.SEC01 
2.5.6.SR02 
3.0.0.M3 

他們沒有使用連字符/破折號符號來單獨預選賽。

無論你做什麼,你必須小心有關版本的順序!看看我添加的第一個鏈接。

更新:也看看@ krzyk評論最近的變化/添加。

+1

現在根據http://www.mojohaus.org/versions-maven-plugin/version-rules.html規則是' - ' – 2016-04-08 07:57:37

+0

@krzyk感謝您提及的變化。將留下我的答案,並添加一個不是你的評論。 – FrVaBe 2016-04-11 06:55:45

0

這是因爲Maven的從未嘗試 找出一個版本是否有 改變

這是在我看來不是根本原因。原因是未來有可靠的構建。你可以在你的pom中定義版本,就是這樣。如果有人從maven中心移除工件或者變得更糟,那麼改變現有的工件就不能確定你的構建將來會工作...或者更老的構建可以工作。

版本號取決於你...我會建議使用3.6.2.1。