Maven清理java項目中未使用到 jar 依賴包的方法
一、為什么要做這件事?
自從我踏入職場,便歷經(jīng)了技術革新的數(shù)次浪潮。從最初的.Net Framework、Winform、WPF,到Asp.Net MVC、Asp.Net MVC WebApi,再到Asp.Net Core 2.x的廣泛應用,我始終深耕于.net領域。然而,隨著技術的不斷演進,我逐漸發(fā)現(xiàn).net相關的工作機會變得稀少。在出租屋內,我自學了一個月的前端技術,竟意外地獲得了進入某知名企業(yè)的機會,從而開啟了全新的前端探索之旅。如今,我又邁入了運維的新領域?;仡欉^往,每一步都充滿了挑戰(zhàn)與不易。
目前,我的主要工作是為客戶提供私有化項目的售后技術支持。在日常工作中,項目經(jīng)常會因為客戶方的漏洞掃描而暴露出一些jar包的漏洞問題,需要進行緊急修復或升級。
二、怎么做?
對于Maven項目,處理起來相對簡單。Maven自身提供了一款強大的依賴分析工具,只需簡單的命令輸入即可輕松實現(xiàn)。在IntelliJ IDEA中,你可以切換到Terminal窗口,或者在命令行中導航至項目根目錄,執(zhí)行以下命令:
mvn dependency:analyze
隨后,仔細查看控制臺輸出的日志信息,特別關注以下幾個部分:
[INFO] --- maven-dependency-plugin:2.8:analyze (default-cli) @ xxxproject --- [WARNING] Used undeclared dependencies found: [WARNING] org.springframework:spring-beans:jar:4.0.0.RELEASE:compile [WARNING] org.springframework:spring-context:jar:4.0.0.RELEASE:compile [WARNING] Unused declared dependencies found: [WARNING] com.alibaba:dubbo:jar:2.5.3:compile [WARNING] com.baidu.disconf:disconf-client:jar:2.6.32:compile [WARNING] org.mybatis:mybatis:jar:3.2.7:compile [WARNING] org.mybatis:mybatis-spring:jar:1.2.2:compile [WARNING] mysql:mysql-connector-java:jar:5.1.41:compile [WARNING] com.alibaba:druid:jar:1.0.9:compile [WARNING] com.github.sgroschupf:zkclient:jar:0.1:compile [WARNING] org.apache.zookeeper:zookeeper:jar:3.4.6:compile [WARNING] org.springframework:spring-jdbc:jar:4.0.0.RELEASE:compile [WARNING] org.slf4j:log4j-over-slf4j:jar:1.7.5:compile [WARNING] org.slf4j:jcl-over-slf4j:jar:1.7.5:runtime [WARNING] ch.qos.logback:logback-classic:jar:1.0.13:compile
接下來,我們將詳細解讀日志中 Used undeclared dependencies found 和 Unused declared dependencies found
Used undeclared dependencies found
這一部分指的是項目中實際使用了某個依賴包,但并未在pom.xml文件中顯式聲明。這些依賴包可能是通過其他依賴間接引入的。
例如,假設你的項目在pom.xml中聲明了對A.jar的依賴,但未聲明對B.jar的依賴。而A.jar的依賴樹中又包含了對B.jar的依賴。通過運行mvn dependency:analyze命令,如果輸出如下警告:
mvn dependency:analyze
出現(xiàn)
[WARNING] Used undeclared dependencies found: B.jar
這意味著你的項目代碼中實際上使用了B.jar中的類或接口。在這種情況下,你應該將B.jar添加到項目的pom.xml文件中,以確保依賴關系的正確聲明。
Unused declared dependencies found
這一部分則是指你在項目的pom.xml文件中聲明了某個依賴包,但在實際的項目代碼中并未使用到它。這些依賴包可能是不必要的,可以考慮從pom.xml中移除。
然而,在刪除這些依賴之前,請務必注意以下幾點:
- “未使用”的定義僅限于main/java和test源代碼目錄,不包括配置文件或其他可能的擴展點。
- 在刪除依賴之前,務必備份pom.xml文件,以防萬一誤刪重要依賴導致的問題。
- Maven的依賴分析工具并非萬能,有時可能會產(chǎn)生誤報。因此,在刪除任何依賴后,都應進行充分的測試以驗證項目的穩(wěn)定性。
三、什么時候做?
- 新項目初始化時:在創(chuàng)建新項目并添加依賴時,務必謹慎選擇所需的jar包,避免盲目復制舊項目的依賴配置,從而減少后續(xù)不必要的清理工作。
- 功能代碼重構時:在進行功能代碼的重構過程中,可以順便進行一次依賴項的審查與清理。由于后續(xù)還有自測和提測等環(huán)節(jié),即使有誤刪的情況也能及時發(fā)現(xiàn)并修復。
四、有什么風險要注意的?
- 結果僅供參考:依賴分析工具的結果并非絕對準確,可能存在誤判的情況。例如,某些工具可能無法識別某些特殊的使用場景(如注解處理器等)。因此,在刪除依賴后,請務必進行全面的測試以驗證項目的正確性。
- 老項目接手時的注意事項:當接手一個遺留的老項目時,可能會發(fā)現(xiàn)大量的依賴問題。然而,在初次接手時并不建議立即進行此類操作。由于對項目的不熟悉,貿(mào)然刪除依賴可能會引發(fā)一系列難以定位的問題,從而浪費大量的時間和精力。建議在充分了解項目結構和業(yè)務邏輯后再進行此類優(yōu)化工作。
五、補充一個快捷方法
使用 IntelliJ IDEA 自帶的 maven 工具
使用方法
- 打開IntelliJ IDEA,導航至項目的pom.xml文件所在目錄。
- 右鍵點擊pom.xml文件,選擇“Maven”菜單中的“Analyze Dependencies”選項。
- IntelliJ IDEA將自動分析項目的依賴關系,并在彈出的窗口中展示分析結果。你可以根據(jù)分析結果進行相應的操作,如添加缺失的依賴或刪除未使用的依賴等。

通過以上步驟,你可以在IntelliJ IDEA中輕松管理項目的依賴關系,確保項目的穩(wěn)定性和可維護性。
到此這篇關于Maven清理java項目中未使用到 jar 依賴包的方法的文章就介紹到這了,更多相關Maven清理jar 內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
Nacos啟動異常與SpringBoot整合異常的問題及解決
文章介紹了Nacos啟動異常和SpringBoot整合報錯的兩種問題:啟動異??赏ㄟ^指定啟動命令或刪除data目錄內容解決;整合報錯因版本不匹配,需將nacos-discovery升級至2.2.7.RELEASE以適配2.0.3注冊中心版本2025-08-08
SpringBoot整合WebService的實現(xiàn)示例
本文主要介紹了SpringBoot整合WebService,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下2021-11-11

