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 Boot 2.7.6整合redis与低版本的区别

    Spring Boot 2.7.6整合redis与低版本的区别

    这篇文章主要介绍了Spring Boot 2.7.6整合redis与低版本的区别,文中补充介绍了SpringBoot各个版本使用Redis之间的区别实例讲解,需要的朋友可以参考下
    2023-02-02
  • Java中判断对象是否为空的不同方法

    Java中判断对象是否为空的不同方法

    在Java编程中,经常会遇到判断对象是否为空的情况,本篇将深入探讨Java中判断对象是否为空的不同方法,包括使用条件判断、使用Java 8的Optional类、使用Apache Commons Lang库等,通过详细的解释和举例说明,帮助读者正确处理空对象问题,需要的朋友一起看看吧
    2023-11-11
  • Java实现将html字符串插入到PPT幻灯片

    Java实现将html字符串插入到PPT幻灯片

    Java后端代码操作PPT幻灯片时,可直接在幻灯片中绘制形状,并在形状中添加文本字符串内容。本篇文章主要介绍通过java实现将html字符串添加到PPT幻灯片的的方法,可添加文字、图片、视频、音频等。以下是具体方法和步骤。
    2021-11-11
  • 关于spring data jpa 模糊查询like的坑点

    关于spring data jpa 模糊查询like的坑点

    这篇文章主要介绍了关于spring data jpa 模糊查询like的坑点,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-12-12
  • Java8新特性:Lambda表达式之方法引用详解

    Java8新特性:Lambda表达式之方法引用详解

    这篇文章主要给大家介绍了关于Java8新特性:Lambda表达式之方法引用的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-11-11
  • Spring Bean的8种加载方式总结

    Spring Bean的8种加载方式总结

    以前学习Spring框架的时候,总结了几种Bean的加载方式,不过老师说还有其它的加载方式,以下八种并不是全部,但也足以用来做很多事情了,希望对大家有所帮助
    2022-10-10
  • MyBatis中resultType和parameterType和resultMap使用总结

    MyBatis中resultType和parameterType和resultMap使用总结

    这篇文章主要介绍了MyBatis中resultType和parameterType和resultMap使用总结,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-11-11
  • SpringBoot集成PostgreSQL表级备份与恢复的实战指南

    SpringBoot集成PostgreSQL表级备份与恢复的实战指南

    本文介绍了在企业级应用中使用SpringBoot+PostgreSQL实现数据备份与恢复的方法,主要包括使用pg_dump导出数据、pg_restore恢复数据及ProcessBuilder调用系统命令,并详细解释了ProcessBuilder、pg_dump与pg_restore的用法、参数配置及常见问题解决方法
    2026-04-04
  • java自定义注解接口实现方案

    java自定义注解接口实现方案

    java注解是附加在代码中的一些元信息,用于一些工具在编译、运行时进行解析和使用,起到说明、配置的功能,本文将详细介绍,此功能的实现方法
    2012-11-11
  • IntelliJ IDEA设置JVM运行参数的操作方法

    IntelliJ IDEA设置JVM运行参数的操作方法

    这篇文章主要介绍了IntelliJ IDEA设置JVM运行参数的操作方法,非常不错,具有参考借鉴价值,需要的朋友可以参考下
    2018-03-03

最新评论