Maven之分析剔除無用的jar引用問題
Maven分析剔除無用的jar引用
當(dāng)項目開發(fā)維護了一段時間時,經(jīng)常會有項目打包速度慢,jar依賴多,依賴關(guān)系錯綜復(fù)雜,這種問題是項目維護最常見的問題,由于開發(fā)人員在bugfix或者feature開發(fā)時往往只是往項目中添加jar依賴,那我們?nèi)绾畏治龀鲰椖恐心男┮蕾囀怯玫降模男┮蕾囀遣挥玫模?/p>
使用Maven analyze來進(jìn)行分析
使用如下命令:
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中直接聲明),是通過引入傳遞下來的包。
舉個例子:
project 在 pom 中聲明了 A.ja r的依賴(沒有聲明 B.jar 的依賴) A.jar 的依賴關(guān)系:
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
這個是指我們在pom中聲明了依賴,但是在實際代碼中并沒有用到這個包!也就是多余的包。
這個時候我們就可以把這個依賴從pom中剔除。
但是這里我們需要注意:
這里說的實際代碼沒有用到,指的是在main/java和test里沒有用的,但是并不是意味著真的沒有用到這些包
有可能配置文件中引用或者其他擴展點自動加載這些包,所以我們在刪除依賴的時候一定要小心,做好備份,因為這類引用maven是分析不出來的。
總結(jié)
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
Java整合RabbitMQ實現(xiàn)五種常見消費模型
本文將深入介紹RabbitMQ的五種常見消費模型,包括簡單隊列模型、工作隊列模型、發(fā)布/訂閱模型、路由模型和主題模型,刪除線格式并探討它們各自的優(yōu)缺點和適用場景,感興趣的可以了解一下2023-11-11
使用Spring Boot的LoggersEndpoint管理日志級別
這篇文章主要為大家介紹了使用Spring Boot的LoggersEndpoint管理日志級別,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-11-11
SpringBoot前后端分離實現(xiàn)個人博客系統(tǒng)
這篇文章主要為大家詳細(xì)介紹了使用springboot+mybatis+前端vue,使用前后端分離架構(gòu)實現(xiàn)的個人博客系統(tǒng),感興趣的小伙伴可以動手嘗試一下2022-06-06
SpringBoot使用RestTemplate如何通過http請求將文件下載到本地
文章介紹了如何通過編寫代碼批量下載文件,解決了沒有提供批量下載接口的問題,首先篩選出需要下載的文件ID,然后通過后端代碼發(fā)起HTTP請求,將下載的資源寫入本地文件中,總結(jié)了實現(xiàn)方式和注意事項,希望能為類似任務(wù)提供參考2025-02-02

