maven提供了一个命令 mvn dependency:tree可以直接打印出依赖树,例:
[INFO] com.qyf404:test-spring-boot:jar:1.0.0
[INFO] ± org.springframework.boot:spring-boot-starter:jar:1.5.4.RELEASE:compile
[INFO] | ± org.springframework.boot:spring-boot:jar:1.5.4.RELEASE:compile
[INFO] | | - org.springframework:spring-context:jar:4.3.9.RELEASE:compile
[INFO] | ± org.springframework.boot:spring-boot-autoconfigure:jar:1.5.4.RELEASE:compile
[INFO] | ± org.springframework.boot:spring-boot-starter-logging:jar:1.5.4.RELEASE:compile
[INFO] | | ± ch.qos.logback:logback-classic:jar:1.1.11:compile
[INFO] | | | - ch.qos.logback:logback-core:jar:1.1.11:compile
[INFO] | | ± org.slf4j:jcl-over-slf4j:jar:1.7.25:compile
[INFO] | | ± org.slf4j:jul-to-slf4j:jar:1.7.25:compile
[INFO] | | - org.slf4j:log4j-over-slf4j:jar:1.7.25:compile
[INFO] | ± org.springframework:spring-core:jar:4.3.9.RELEASE:compile
[INFO] | - org.yaml:snakeyaml:jar:1.17:runtime
mvn dependency:tree -Dverbose,通过添加Dverbose来查看依赖树所有的依赖关系。
mvn dependency:tree -Dverbose,后面添加-Dincludes或-Dexcludes来展示你想查看或者过滤的jar包。
过滤串使用:groupId:artifactId:version的方式进行过滤,可以不用书写全
例:mvn dependency:tree -Dverbose -Dincludes=asm:asm
就会出来asm依赖包的分析信息:
[INFO] — maven-dependency-plugin:2.1:tree (default-cli) @ ridge-test —
[INFO] com.ridge:ridge-test:jar:1.0.2-SNAPSHOT
[INFO] ± asm:asm:jar:3.2:compile
[INFO] - org.unitils:unitils-dbmaintainer:jar:3.3:compile
[INFO] - org.hibernate:hibernate:jar:3.2.5.ga:compile
[INFO] ± cglib:cglib:jar:2.1_3:compile
[INFO] | - (asm:asm:jar:1.5.3:compile - omitted for conflict with 3.2)
[INFO] - (asm:asm:jar:1.5.3:compile - omitted for conflict with 3.2)
[INFO] ------------------------------------------------------------------------
对asm有依赖有一个直接的依赖(asm:asm:jar:3.2)还有一个传递进入的依赖(asm:asm:jar:1.5.3)
承上,假设我们不希望asm:asm:jar:1.5.3出现,根据分析,我们知道它是经由org.unitils:unitils-dbmaintainer:jar:3.3引入的,那么在pom.xml中找到这个依赖,做其它的调整:
<dependency>
<groupId>org.unitils</groupId>
<artifactId>unitils-dbmaintainer</artifactId>
<version>${unitils.version}</version>
<exclusions>
<exclusion>
<artifactId>dbunit</artifactId>
<groupId>org.dbunit</groupId>
</exclusion>
<!-- 这个就是我们要加的片断 -->
<exclusion>
<artifactId>asm</artifactId>
<groupId>asm</groupId>
</exclusion>
</exclusions>
</dependency>
再分析一下,你可以看到传递依赖没有了:
[INFO]
[INFO] — maven-dependency-plugin:2.1:tree (default-cli) @ ridge-test —
[INFO] com.ridge:ridge-test:jar:1.0.2-SNAPSHOT
[INFO] - asm:asm:jar:3.2:compile
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
mvn dependency:tree>tree.txt,也可以将依赖通过该命令导入到指定文件查看