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

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

在彈出窗口中點(diǎn)擊左上角+,選擇Maven

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

點(diǎn)擊IDE右上方的執(zhí)行run或debug開(kāi)始執(zhí)行

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

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

改進(jìn)方案為在pom.xml中添加對(duì)spring-jdbc以及spring-tx的依賴(lài)
<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>
未使用的但是聲明的依賴(lài)
表示在pom.xml中添加的依賴(lài)在實(shí)際程序中并沒(méi)有用到
改進(jìn)方案為移除無(wú)用的依賴(lài),但是有一點(diǎn)除外,就是我們聲明scope為test的依賴(lài),也就是單元測(cè)試中使用到的,這些不能夠移除。如

我們只能夠?qū)?code>springboot的依賴(lài)移除,因?yàn)樵趯?shí)際中并沒(méi)有使用到,但是其余的以:test結(jié)尾的依賴(lài)是不能移除的,在單元測(cè)試中會(huì)使用到他們
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
- idea中maven使用tomcat7插件運(yùn)行run報(bào)錯(cuò)Could not start Tomcat問(wèn)題
- 如何使用maven-helper插件解決jar包沖突問(wèn)題
- SpringBoot Maven打包插件spring-boot-maven-plugin無(wú)法解析原因
- SpringBoot使用classfinal-maven-plugin插件加密Jar包的示例代碼
- maven插件maven-assembly-plugin打包歸納文件zip/tar使用
- maven插件maven-jar-plugin構(gòu)建jar文件的詳細(xì)使用
- Spring Boot的Maven插件Spring Boot Maven plugin詳解
相關(guān)文章
SpringBoot使用@Async注解實(shí)現(xiàn)異步調(diào)用
這篇文章主要介紹了SpringBoot使用@Async注解實(shí)現(xiàn)異步調(diào)用,異步調(diào)用是相對(duì)于同步調(diào)用而言的,同步調(diào)用是指程序按預(yù)定順序一步步執(zhí)行,每一步必須等到上一步執(zhí)行完后才能執(zhí)行,異步調(diào)用則無(wú)需等待,程序執(zhí)行完即可執(zhí)行,可以減少程序執(zhí)行時(shí)間,需要的朋友可以參考下2023-10-10
關(guān)于Object中equals方法和hashCode方法判斷的分析
今天小編就為大家分享一篇關(guān)于關(guān)于Object中equals方法和hashCode方法判斷的分析,小編覺(jué)得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧2019-01-01
java接口返回參數(shù)按照請(qǐng)求參數(shù)進(jìn)行排序方式
這篇文章主要介紹了java接口返回參數(shù)按照請(qǐng)求參數(shù)進(jìn)行排序方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-09-09
MyBatis中resultMap和resultType的區(qū)別詳解
這篇文章主要介紹了MyBatis中resultMap和resultType的區(qū)別詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-07-07
openGauss數(shù)據(jù)庫(kù)JDBC環(huán)境連接配置的詳細(xì)過(guò)程(Eclipse)
這篇文章主要介紹了openGauss數(shù)據(jù)庫(kù)JDBC環(huán)境連接配置(Eclipse),演示基于JDBC開(kāi)發(fā)的主要步驟,會(huì)涉及創(chuàng)建數(shù)據(jù)庫(kù)、創(chuàng)建表、插入數(shù)據(jù)等,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),需要的朋友可以參考下2022-06-06
Java多線程 Producer and Consumer設(shè)計(jì)模式
這篇文章主要介紹了Java多線程 Producer and Consumer設(shè)計(jì)模式,producer是生產(chǎn)者的意思:指生產(chǎn)數(shù)據(jù)的線程,consumer是消費(fèi)者的意思,指的是使用數(shù)據(jù)的線程,下文圍繞Producer及Consumer展開(kāi)話(huà)題,需要的朋友可以參考一下2021-10-10

