Maven 使用命令mvn dependency:tree查看jar包依赖树

本文介绍了如何使用Maven的`mvn dependency:tree`命令分析项目的依赖树,包括如何查看详细依赖关系、过滤特定依赖以及如何排除不需要的依赖以解决版本冲突。通过示例展示了排除asm:asm:jar:1.5.3的具体步骤,确保项目只使用期望的asm:asm:jar:3.2版本。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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,也可以将依赖通过该命令导入到指定文件查看

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

你好像很好吃a

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值