營銷型網(wǎng)站建設模板今日新聞頭條大事
目錄
Used undeclared dependencies found
Unused declared dependencies found
當項目經(jīng)過一段時間的開發(fā)和維護后,經(jīng)常會遇到項目打包速度變慢的問題。這通常與項目中包含大量的jar依賴有關,這些依賴之間的關系錯綜復雜。這種情況在項目維護過程中是非常常見的。由于開發(fā)人員在修復bug或開發(fā)新功能時,往往會簡單地向項目中添加新的jar依賴,而沒有對現(xiàn)有依賴進行清理或優(yōu)化。因此,我們需要一種方法來分析項目中哪些jar依賴是真正被使用的,哪些依賴則可能已經(jīng)不再需要,從而幫助我們優(yōu)化項目結構,提高構建效率。
我們可以使用Maven analyze來進行分析,使用如下命令:
mvn dependency:analyze
在idea的終端輸入命令,則會輸出如下的日志:
當你運行 mvn dependency:analyze 命令時,Maven 會對項目的依賴進行分析,并報告一些潛在的問題。日志中的Used undeclared dependencies found和Unused declared dependencies found是兩個常見的警告信息。
Used undeclared dependencies found
Used undeclared dependencies found這個警告表示項目中使用了某些未在 pom.xml
文件中聲明的依賴。但是它并不是直接的依賴(就是說沒有在pom中直接聲明),是通過引入傳遞下來的包。換句話說,項目中有一些類或資源是從這些未聲明的依賴中引用的,但這些依賴沒有被明確地添加到項目的依賴管理中。
舉個例子:project在pom中聲明了A.jar的依賴(沒有聲明B.jar的依賴) A.jar的依賴關系:A.jar -> B.jar 通過mvn dependency:analyze出現(xiàn) [WARNING] Used undeclared dependencies found: B.jar 就說明project中的代碼用到了B.jar的代碼 這個時候你就可以把B.jar直接聲明在pom中。
Unused declared dependencies found
Unused declared dependencies found這個警告表示項目中聲明了一些沒有被使用的依賴。換句話說,這些依賴在項目中沒有任何引用或使用。
假設你在 pom.xml
中聲明了一個依賴 com.example:example-lib
,但在項目代碼中并沒有使用任何來自該庫的類或資源。運行 mvn dependency:analyze
后,你會看到類似如下的警告:
[WARNING] Unused declared dependencies found:
com.example:example-lib:jar:1.0.0:compile
但是這里我們需要注意:這里說的實際代碼沒有用到,指的是在main/java和test里沒有用的,但是并不是意味著真的沒有用到這些包,有可能配置文件中引用或者其他擴展點自動加載這些包,所以我們在刪除依賴的時候一定要小心,做好備份,因為這類引用maven是分析不出來的。
要注意的還有,這個檢測的結果僅供參考,有時也不準確,如org.projectlombok:lombok:jar:1.16.20:provided,實際上在項目中有使用到它的注解@Data,這個屬于誤判。要注意剔除依賴后多測試,工具畢竟有畢竟的缺陷性。
對于這種,最好是先注釋,測試沒有問題的話再刪除,這樣也不用做備份,隨時取消注釋。
此外,我們在新項目建立時,引用jar包時要慎重,不要一股腦兒直接拷貝老項目的依賴,避免后期又花時間來剔除。