Maven插件之Dependency:analyze的使用
前言
完成新功能的開發(fā)后,在發(fā)包前組長告訴我要檢查maven工程的依賴,并告訴我相關指令,此文記錄一下使用方式
正文
簡介
Dependency插件提供了操縱artifact的能力,可以復制以及拆包本地或遠程倉庫的artifact到指定地點。
Dependency有很多的goal,這里介紹的是dependency:analyze
用途
用來分析項目的依賴并確定以下內容
- 使用的并且聲明的依賴
- 使用的但是未聲明的依賴
- 未使用的但是聲明的依賴
在文章最后的《分析結果以及改進方案》章節(jié)中會介紹具體的含義
使用方法
前提:保證電腦已經下載了Maven,以及已經配置好Maven的環(huán)境變量
通過命令行
- 打開命令行,進入Maven項目或模塊的根目錄,即包含
pom.xml的目錄(如果該目錄不包含pom.xml則會報錯) - 執(zhí)行以下指令
mvn dependency:analyze
等待執(zhí)行完畢后,會看到類似如下輸出

通過idea
點擊idea右上方Add Configuration...按鈕(不同版本之間可能有差異)

在彈出窗口中點擊左上角+,選擇Maven

指定項目路徑Working directory為想要分析的Maven項目/模塊。
在命令行Command line中輸入dependency:analyze(IDEA中執(zhí)行Maven指令并不需要以mvn開頭,IDEA會自動添加)

點擊IDE右上方的執(zhí)行run或debug開始執(zhí)行

等待執(zhí)行完畢后,會看到類似如下輸出

分析結果以及改進方案
最開始的《用途》章節(jié)中曾引出,depencency:analyze插件會分析如下內容
- 使用的并且聲明的依賴
- 使用的但是未聲明的依賴
- 未使用的但是聲明的依賴
我們需要根據(jù)分析結果進行改進優(yōu)化:
使用的并且聲明的依賴
該情況屬于正常現(xiàn)象,在分析結果中也不會有任何體現(xiàn)。
使用的但是未聲明的依賴
表示依賴的a.jar又引用了其他的b.jar,導致我們間接的依賴了b.jar,但是我們并沒有在pom.xml中顯示的進行依賴。這種情況是不推薦的,原因是我們可能在項目中了b.jar的方法,萬一哪天對a.jar進行升級,而升級后的a.jar不依賴了b.jar,那么我們的程序就會報錯。
改進辦法就是顯示的依賴b.jar,如前面的例子中出現(xiàn)的

改進方案為在pom.xml中添加對spring-jdbc以及spring-tx的依賴
<dependency> <groupId>org.springframework</groupId> <artifactId>spring-jdbc</artifactId> <version>5.1.9.RELEASE</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-tx</artifactId> <version>5.1.9.RELEASE</version> </dependency>
未使用的但是聲明的依賴
表示在pom.xml中添加的依賴在實際程序中并沒有用到
改進方案為移除無用的依賴,但是有一點除外,就是我們聲明scope為test的依賴,也就是單元測試中使用到的,這些不能夠移除。如

我們只能夠將springboot的依賴移除,因為在實際中并沒有使用到,但是其余的以:test結尾的依賴是不能移除的,在單元測試中會使用到他們
總結
以上為個人經驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
- idea中maven使用tomcat7插件運行run報錯Could not start Tomcat問題
- 如何使用maven-helper插件解決jar包沖突問題
- SpringBoot Maven打包插件spring-boot-maven-plugin無法解析原因
- SpringBoot使用classfinal-maven-plugin插件加密Jar包的示例代碼
- maven插件maven-assembly-plugin打包歸納文件zip/tar使用
- maven插件maven-jar-plugin構建jar文件的詳細使用
- Spring Boot的Maven插件Spring Boot Maven plugin詳解
相關文章
spring?aop?pointcut?添加多個execution方式
這篇文章主要介紹了spring?aop?pointcut?添加多個execution方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-11-11
SpringBoot整合Ip2region獲取IP地址和定位的詳細過程
ip2region v2.0 - 是一個離線IP地址定位庫和IP定位數(shù)據(jù)管理框架,10微秒級別的查詢效率,提供了眾多主流編程語言的 xdb 數(shù)據(jù)生成和查詢客戶端實現(xiàn) ,這篇文章主要介紹了SpringBoot整合Ip2region獲取IP地址和定位,需要的朋友可以參考下2023-06-06
java代碼如何實現(xiàn)存取數(shù)據(jù)庫的blob字段
這篇文章主要介紹了java代碼如何實現(xiàn)存取數(shù)據(jù)庫的blob字段問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2025-04-04
Java編程synchronized與lock的區(qū)別【推薦】
互聯(lián)網信息泛濫環(huán)境下少有的良心之作!如果您想對Java編程synchronized與lock的區(qū)別有所了解,這篇文章絕對值得!分享給大家,供需要的朋友參考。不說了,我先學習去了。2017-10-10
SpringBoot學習篇之@Valid與@Validated的區(qū)別
@Valid是使用Hibernate?validation的時候使用,@Validated是只用Spring?Validator校驗機制使用,下面這篇文章主要給大家介紹了關于SpringBoot學習篇之@Valid與@Validated區(qū)別的相關資料,需要的朋友可以參考下2022-11-11
Java異常處理之try...catch...finally詳解
今天小編就為大家分享一篇關于Java異常處理之try...catch...finally詳解,小編覺得內容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧2019-01-01
Java中s.charAt(index)用于提取字符串s中的特定字符操作
這篇文章主要介紹了Java中s.charAt(index)用于提取字符串s中的特定字符操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-10-10

