背景:
1腕柜、項(xiàng)目通過父pom定義dependencyManagement來進(jìn)行版本管理膀篮,大概有上千個依賴吧~
2毯焕、所有業(yè)務(wù)工程衍腥,都需要依賴父pom獲取統(tǒng)一的版本管理
3、父pom由于管理的依賴太多纳猫,且更新非常頻繁婆咸。導(dǎo)致每次idea進(jìn)行reimport后,都需要至少1個小時等待芜辕,開發(fā)效率太低
怎么解:
1尚骄、為啥我要reimport呢?肯定是需要引入某個依賴的新版本
2侵续、為啥reimport后倔丈,那么慢呢?因?yàn)閞eimport會對父pom進(jìn)行更新状蜗。由于父pom幾乎時刻在更新需五,所以每次reimport幾乎都有其他包要重新下載。
3轧坎、我不需要的包警儒,可不可以不用下載。答案是可以的眶根。
為了避免不需要包的下載蜀铲,我們就不能更新父pom。為了避免更新父pom属百,我們修改setting文件记劝。把<snapshots>的updatePolicy修改為never。
mvn會讀父pom下的maven-metadata-xxx.xml族扰,如果沒讀到回去遠(yuǎn)程倉庫下載厌丑。所以,我們必須得保證該文件要有渔呵。
修改完setting后怒竿,所有snapshot包,同一個版本都不會再去遠(yuǎn)程進(jìn)行比對拉取了扩氢。如果我們明確需要某一個包耕驰,可以執(zhí)行:http://www.reibang.com/p/5f097c3297f2,會單獨(dú)拉取指定的最新包到本地倉庫录豺。
但是這個時候朦肘,雖然你把想要的包拉到本地倉庫了饭弓,但是idea并不會感知到這個包。所以媒抠,需要你執(zhí)行reimport導(dǎo)入到lib中弟断。
下面簡單說下思路:
1、修改setting文件趴生,停止snapshot版本自動拉取最新包
2阀趴、修改自己想要更新依賴的版本(包升級不會被第1條影響)
3、單獨(dú)拉取指定包苍匆,到本地倉庫
4舍咖、執(zhí)行reimport(已經(jīng)停止snapshot更新,但是要修改的依賴已經(jīng)被拉取到本地倉庫锉桑,剛好解決)
========================
最佳實(shí)踐:
1排霉、mvn命令和idea的mvn,兩個setting分開民轴。mvn命令行的setting可以使用daily攻柠,目的是為了下載快一點(diǎn)。
2后裸、idea的mvn瑰钮,設(shè)置單獨(dú)的setting。目的是為了讓idea直接讀取本地倉庫微驶,不要去遠(yuǎn)程拉取了浪谴,順便把依賴import到項(xiàng)目的lib中