2017-02-13 65 views

回答

0

在Maven的世界裏,任何項目或組件都必須有自己的 版本。版本的值可能是1.0.0,1.3-alpha-4,2.0, 2.1-SNAPSHOT或2.1-20091214.221414-13。其中,1.0,1.3-alpha-4和2.0是穩定版本,而2.1-SNAPSHOT和 2.1-20091214.221414-13是不穩定的快照版本。

爲什麼Maven會區分發行版本和快照版本?簡單的1.0.0,1.2,2.1等是不夠的?爲什麼即使是2.1-SNAPSHOT,甚至長期2.1-20091214.221414-13?試想一下這種情況,張在開發模塊A版本2.1時,該版本尚未正式發佈,再加上開發模塊A模塊B,這是由小張吉家族成員開發的,B函數依賴於A的In在開發過程中,張經常需要自己構建自己的最新產品,到季度MM,對她進行開發和集成調試,問題是,這是如何工作的? 如果不斷更新版本2.1.1,2.1.2,2.1.3 ....首先,小張和季度MM都需要經常更換POM,如果有更多的模塊依賴於模塊A,將會涉及更多的POM變化;其次,大量的版本實際上只包含一個小的差異,這會導致濫用版本號。 Maven的快照版本機制是爲了解決上述問題。在這個例子中,小張只需要將模塊A的版本設置爲2.1-SNAPSHOT,然後發佈到PW,在發佈的過程中,Maven會自動爲組件添加時間戳。例如:2.1-20091214.221414-13於2009年12月14日22:14 14秒的第13張快照。有了這個時間戳,Maven隨時可以在存儲庫2.1-SNAPSHOT版本中找到最新的文件。此時,本季MM配置爲模塊A 2.1-SNAPSHOT版本的依賴關係,當她的組件模塊B中,Maven會自動從倉庫模塊檢查一個2.1-SNAPSHOT最新的組件,當發現更新時會下載默認情況下,Maven每天都會檢查更新(由存儲庫的updatePolicy控制),並且用戶還可以使用命令行-U強制Maven檢查更新,如:mvn clean install -U。 基於快照版本機制,Zhang可以在構建成功後將組件部署到倉庫,並且季度MM不能考慮模塊A的構建,並且可以確保您可以獲取最新的可用快照小部件爲模塊A在任何時候。需要額外的手動操作。

1

「快照/釋放的強制更新」是像運行下面的命令

mvn -U install 

-U也可以使用備選地作爲--update快照。見here

Eclipse的m2eclipse插件在內部使用maven-core API調用相同。

參見setUpdateSnapshots方法。