主要目的是升級現(xiàn)有的jar包,排除傳遞依賴引起的沖突
maven 命令
mvn dependency tree
mvn dependency:tree命令可以查看當前項目的依賴關(guān)系。可以將當前POM的依賴關(guān)系按照樹形結(jié)構(gòu)展開衰倦。
[INFO] +- org.springframework:spring-context:jar:4.2.8.RELEASE:compile
[INFO] | +- org.springframework:spring-aop:jar:4.2.8.RELEASE:compile
[INFO] | | \- aopalliance:aopalliance:jar:1.0:compile
[INFO] | +- org.springframework:spring-beans:jar:4.2.8.RELEASE:compile
[INFO] | \- org.springframework:spring-expression:jar:4.2.8.RELEASE:compile
...
上述樹形結(jié)構(gòu)里,\-
表示當前父節(jié)點最后的子節(jié)點刃泡。
–Dverbose
加上這個參數(shù)虑省,可以將當前所有的依賴關(guān)系都展示出來忧饭,包括來自不同處的依賴項曼玩。
[INFO] +- org.springframework:spring-context-support:jar:4.2.8.RELEASE:compile
[INFO] | +- (org.springframework:spring-beans:jar:4.2.8.RELEASE:compile - omitted for duplicate)
[INFO] | +- (org.springframework:spring-context:jar:4.1.1.RELEASE:compile - version managed from 4.2.8.RELEASE; omitted for conflict with 4.2.8.RELEASE)
[INFO] | \- (org.springframework:spring-core:jar:4.1.1.RELEASE:compile - version managed from 4.2.8.RELEASE; omitted for conflict with 4.2.8.RELEASE)
...
–Dincludes
-Dincludes 可以進行參數(shù)過濾鳞骤,如果需要查詢spring相關(guān)的依賴,可以
mvn dependency:tree -Dverbose -Dincludes=*spring*:*spring*
[INFO] +- org.springframework:spring-context:jar:4.2.8.RELEASE:compile
[INFO] | +- org.springframework:spring-aop:jar:4.2.8.RELEASE:compile
[INFO] | | +- (org.springframework:spring-beans:jar:4.2.8.RELEASE:compile - omitted for duplicate)
[INFO] | | \- (org.springframework:spring-core:jar:4.1.1.RELEASE:compile - version managed from 4.2.8.RELEASE; omitted for duplicate)
[INFO] | +- org.springframework:spring-beans:jar:4.2.8.RELEASE:compile
[INFO] | | \- (org.springframework:spring-core:jar:4.1.1.RELEASE:compile - version managed from 4.2.8.RELEASE; omitted for duplicate)
...
當然演训,可以將輸出結(jié)果導(dǎo)入到文本中弟孟。只需要在命令后加入”>a.txt”即可贝咙。
mvn help:effective-pom
上述命令可以將當前項目自己的POM已經(jīng)從父類中繼承的POM內(nèi)容輸出样悟,可以輸出到文本中。
mvn help:effective-pom>a.txt
mvn dependency:analyze
dependency:analyze
是通過分析bytecode來輸出報告庭猩。包含Used undeclared dependencies(使用但未定義的依賴項)和Unused declared dependencies(未使用但卻定義的依賴項)窟她。
- Used undeclared dependencies
該列表列出的是程序代碼直接用到的、但并沒在pom.xml里定義的依賴項蔼水。 - Unused declared dependencies
該列表列出的是程序代碼沒用到的震糖、但在pom.xml里定義的依賴項。注意趴腋,該列表可能不準確吊说,因為程序代碼可能使用了反射技術(shù)论咏,在運行時需要這些jar包存在。
排除依賴
dependency
在dependency中颁井,可以通過exclusions標簽進行依賴排除厅贪。
例如,排除spring
<exclusions>
<exclusion>
<groupId>org.springframework</groupId>
<artifactId>spring</artifactId>
</exclusion>
</exclusions>
排除所有
<exclusions>
<exclusion>
<groupId>*</groupId>
<artifactId>*</artifactId>
</exclusion>
</exclusions>