背景
最近在項(xiàng)目開發(fā)過程中遇到了修改了某個模塊的代碼团驱,重新打包引用該模塊的module時(shí),修改的代碼不存在的問題
探究
查詢maven打包相關(guān)的資料空凸,明白了maven打包時(shí)需要到本地的maven倉庫查找所有依賴的jar包嚎花,包括同一個項(xiàng)目的其它依賴模塊的jar包。而我們常用的在idea中打開項(xiàng)目時(shí)呀洲,項(xiàng)目是依賴源碼編譯的紊选,因此即使某個依賴的module在本地maven倉庫中沒有打成jar包也是可以編譯生成的,在模塊中創(chuàng)建一個類對象两嘴,其他依賴模塊可以立馬感知到。
但是在打包時(shí)就需要去maven倉庫里面找了族壳,如果找不到就會打包失敗
問題
這么看來我們在打包某個模塊時(shí)憔辫,如果依賴的模塊代碼有變動時(shí)需要先將依賴模塊打包后再對該模塊進(jìn)行打包。是不是感覺很麻煩仿荆,那有沒有辦法在打包時(shí)贰您,將依賴有變動的module順帶著重新install到本地maven倉庫呢
解決方案
答案是可以的,在打包時(shí)使用
maven clean install -U -pl 打包模塊的相對路徑 -am -Dmaven.test.skip=true
-U
意思是:強(qiáng)制刷新本地倉庫不存在release版和所有的snapshots版本拢操。
對于release版本锦亦,本地已經(jīng)存在,則不會重復(fù)下載
對于snapshots版本令境,不管本地是否存在杠园,都會強(qiáng)制刷新,但是刷新并不意味著把jar重新下載一遍舔庶。只下載幾個比較小的文件抛蚁,通過這幾個小文件確定本地和遠(yuǎn)程倉庫的版本是否一致陈醒,再決定是否下載
-pl
全稱 --project
英文解釋:Build specified reactor projects instead of all projects
中文說明:選項(xiàng)后可跟隨{groupId}:{artifactId}或者所選模塊的相對路徑(多個模塊以逗號分隔)
-am
全稱:--also-make
英文解釋:If project list is specified, also build projects required by the list
中文說明:表示同時(shí)處理選定模塊所依賴的模塊