IDEA查看Maven依赖树与解决Jar包冲突的方法

 更新时间:2025年11月10日 10:02:06   作者:Knight_AL  
这篇文章主要介绍了如何使用IDEA查看Maven依赖树,找出冲突的jar包,并提供了解决冲突的方法,包括使用排除(exclusion)和在dependencyManagement中强制指定版本,需要的朋友可以参考下

模拟依赖冲突

  <dependencies>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-webmvc</artifactId>
            <version>6.0.9</version>
        </dependency>

        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-aop</artifactId>
            <version>5.3.23</version>
        </dependency>
    </dependencies>

一、查看依赖树

方法 1:IDEA 自带 Maven 工具

打开右侧 Maven 工具栏(快捷键 Alt+Shift+M / View > Tool Windows > Maven)。

找到你的项目,展开 Dependencies 节点。

  • 这里能看到所有依赖树结构。
  • 如果某个依赖有冲突,IDEA 通常会用 灰色/红色字体标注出被排除或版本冲突的 jar。

鼠标悬停在依赖上,可以看到它的 来源(哪个依赖引入的)

方法 2:使用命令行

在项目根目录执行:

mvn dependency:tree

这会打印依赖树,例如:

[INFO] org.example:dependency-test:jar:1.0-SNAPSHOT
[INFO] +- org.springframework:spring-webmvc:jar:6.0.9:compile
[INFO] |  +- org.springframework:spring-beans:jar:6.0.9:compile
[INFO] |  +- org.springframework:spring-context:jar:6.0.9:compile
[INFO] |  +- org.springframework:spring-core:jar:6.0.9:compile
[INFO] |  |  \- org.springframework:spring-jcl:jar:6.0.9:compile
[INFO] |  +- org.springframework:spring-expression:jar:6.0.9:compile
[INFO] |  \- org.springframework:spring-web:jar:6.0.9:compile
[INFO] |     \- io.micrometer:micrometer-observation:jar:1.10.7:compile
[INFO] |        \- io.micrometer:micrometer-commons:jar:1.10.7:compile
[INFO] \- org.springframework:spring-aop:jar:5.3.23:compile

org.springframework:spring-beans:jar:6.0.9:compile用的6.0.0的版本

如果树太大,可以加过滤:

mvn dependency:tree -Dincludes=org.springframework

方法 3:IDEA 插件(推荐)

安装 Maven Helper 插件(在 IDEA 插件市场搜索)。

打开 pom.xml,底部会出现 Dependency Analyzer 标签页。

在这个面板里,可以:

  • 一键查看依赖树
  • 高亮显示冲突 jar 包
  • 直接右键选择 Exclude 依赖

二、找出冲突 jar 包

  • 在依赖树里寻找 同一个 groupId + artifactId 但不同版本的依赖。

例如:

org.springframework:spring-beans:6.0.9
org.springframework:spring-beans:5.3.23 (omitted for conflict)
  • 表示 spring-beans 有两个版本冲突。
  • Maven 默认会选 路径最短(离项目最近)的依赖,其他版本就会被排除(omitted)。
    但有时候这个版本并不是你想要的,就需要手动干预。

三、解决冲突(exclusion)

在 pom.xml 中找到冲突依赖的 上游依赖,添加 exclusion

例如,如果 spring-boot-starter 引入了错误的 commons-logging,可以这样写:

       <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-webmvc</artifactId>
            <version>6.0.9</version>
            <exclusions>
                <exclusion>
                    <groupId>org.springframework</groupId>
                    <artifactId>spring-beans</artifactId>
                </exclusion>
            </exclusions>
        </dependency>

或者如果只是版本不一致,可以在 dependencyManagement 里强制指定版本:

<dependencyManagement>
    <dependencies>
        <dependency>
             <groupId>org.springframework</groupId>
             <artifactId>spring-beans</artifactId>
            <version>5.3.23</version>
        </dependency>
    </dependencies>
</dependencyManagement>

四、总结

  • 快速看依赖树 → IDEA 自带依赖树 或 mvn dependency:tree
  • 高效排查冲突 → 装 Maven Helper 插件,直观显示冲突。
  • 解决冲突 → 用 exclusion 排除不需要的包,或在 dependencyManagement 锁定版本。

到此这篇关于IDEA查看Maven依赖树与解决Jar包冲突的方法的文章就介绍到这了,更多相关IDEA查看Maven依赖树内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Spring三级缓存解决循环依赖的过程分析

    Spring三级缓存解决循环依赖的过程分析

    这篇文章主要介绍了Spring三级缓存解决循环依赖,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-04-04
  • Java自定义类加载器实现类隔离详解

    Java自定义类加载器实现类隔离详解

    由于每种组件的不同版本所依赖的jar包不同,我们可以借鉴tomcat的实现方式,通过自定义类加载器打破双亲委派机制来实现类隔离,从而达到操作多组件多版本的目的。本文就来和大家详细聊聊实现方法
    2023-03-03
  • 利用SpringDataJPA开启审计功能,自动保存操作人操作时间

    利用SpringDataJPA开启审计功能,自动保存操作人操作时间

    这篇文章主要介绍了利用SpringDataJPA开启审计功能,自动保存操作人操作时间,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-12-12
  • SpringBoot集成RabbitMQ实现用户注册的示例代码

    SpringBoot集成RabbitMQ实现用户注册的示例代码

    这篇文章主要介绍了SpringBoot集成RabbitMQ实现用户注册的示例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-12-12
  • SpringBoot如何返回Json数据格式

    SpringBoot如何返回Json数据格式

    这篇文章主要介绍了SpringBoot如何返回Json数据格式问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-03-03
  • 详解Java设计模式编程中的里氏替换原则

    详解Java设计模式编程中的里氏替换原则

    这篇文章主要介绍了Java设计模式编程中的里氏替换原则,有这个名字是因为这是由麻省理工学院的一位姓里的女士Barbara Liskov提出来的(嗯...),需要的朋友可以参考下
    2016-02-02
  • Java实现Socket的TCP传输实例

    Java实现Socket的TCP传输实例

    这篇文章主要介绍了Java实现Socket的TCP传输,实例分析了java通过socket实现TCP传输的相关技巧,需要的朋友可以参考下
    2015-05-05
  • java中子类继承父类,程序运行顺序的深入分析

    java中子类继承父类,程序运行顺序的深入分析

    本篇文章是对java中子类继承父类,程序运行顺序进行了详细的分析介绍,需要的朋友参考下
    2013-06-06
  • ZIP4j 压缩与解压的实例详解

    ZIP4j 压缩与解压的实例详解

    这篇文章主要介绍了ZIP4j 压缩与解压的实例详解的相关资料,希望通过本文能帮助到大家,需要的朋友可以参考下
    2017-10-10
  • java切分字符串的2种方法实例

    java切分字符串的2种方法实例

    在我们日常工作中经常遇到截取字符串的需求,下面这篇文章主要给大家介绍了关于java切分字符串的2种方法,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2022-06-06

最新评论