maven中的snapshot来源与注意事项
maven的依賴管理是基于版本管理的,在maven2之后,把版本管理細化snapshot 快照倉庫和release發布倉庫。release版本,對于發布狀態的artifact(就是被依賴的jar包),如果版本號相同,即使我們內部的鏡像服務器上的組件比本地新,maven也不會主動下載的。這里也為snapshot 的出現打下了伏筆。
??????? 快照版本,很多人不是特別理解為什么要有這個事物的出現,它的出現對于編程有什么幫助嗎?沒有snapshot出現之前,我們開發過程依賴別人開發某個包,通常maven會集中管理這些依賴包,它會要求別人打包成jar放到鏡像服務器上,自己本地的pom.xml文件設置了依賴后,maven編譯時,會自動從鏡像服務器上下載依賴。但如果鏡像服務器上有相同版本的依賴時,maven就不會下載,這是上段文字的白話版本,那么舉個例子說明一下。
?????? 比如,你的工程要依賴的core版本是 1.0.0 版本,結果這個版本還正處于對方(叫小菜吧)的開發過程中,他利用maven命令mvn install打包成jar,并部署到服務器上,根據pom設定的版本,你順利下載了依賴包。但小菜后續開發過程,發現了一個致命bug,那么他再操作一次,那么,即使服務器的更新是你需要的,你只能干著急,只能跟小菜吼一聲,“你的版本,老子無法更新依賴包,再給我發一個新的版本上去?!毙〔艘宦?#xff0c;好吧,那我把版本升到 1.0.1 版本,你通過update dependencies 下載了這個新版本的jar包。這樣的情況,會循環地出現,那么你和小菜有點惱火了,maven就是老鼠鉆到風箱里,兩頭受氣,maven想能不能開發一個功能,使雙方默認可以上傳并打包下載到最新的開發版本,而不用修改版本號,否則開發完成之后,服務器上是一堆的release版本。有了這個思路,maven增加了劃時代的功能,snapshot ,這樣依賴版本為 1.0.0-SNAPSHOT (注意必須為全大寫),當服務器上有更新時,會自動下載到本地,省去了不少、和小菜的溝通時間,也減小了不少由于版本問題帶來的編譯錯誤。
????? 任何東西的使用,需要遵循其規則,snapshot雖然好用,如果使用不當,反而易造成困惑問題。首先,開發一個依賴jar包時,注意snapshot版本號的不同,需要一個統一的地方記錄各自的版本,在開發周期很長的情況下,版本號release的順序并非按版本號順序發布,重要的是,大家的開發版本號不能重復。如果你也在開發這個core.jar,你依賴于本地,而服務器上別人有也相同版本號的core.jar定期放在服務器上,這樣,本地的jar經常會被來自服務器版本覆蓋而導致錯誤。
??????? 總結一下,我們在開發階段,可以將公用庫的版本設置為快照版本,而被依賴組件則引用快照版本進行開發,在公用庫的快照版本更新后,我們也不需要修改pom版本號來下載新的版本,直接mvn執行相關編譯、打包命令即可重新下載最新的快照庫了,從而保證了開發進度和質量。
總結
以上是生活随笔為你收集整理的maven中的snapshot来源与注意事项的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 架构设计 | 基于Seata中间件,微服
- 下一篇: 基于.Net Remoting的项目总结