阅读 223

Maven Pom 文件中的隐式依赖导致Jar冲突问题

这篇文章主要介绍了Maven Pom 文件中的隐式依赖导致Jar冲突问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

目录
  • 在maven项目中遇到这样一个场景

  • 解决了上述冲突的问题

  • Maven 查看jar包依赖关系

在maven项目中遇到这样一个场景

  • 项目中的pom文件中,依赖了Spring-core,而Spring-core又隐式的依赖了commons-logging

  • 项目中同时配置了对定时任务quartz 包的依赖,而quartz又隐式依赖了slf4j。

这样项目中既有了commons-logging又有了slf4j。导致在log4j.properties里配置的mybatis的sql显示配置,一直没起作用,直到我查看maven dependencie中的jar包时,才发现项目既依赖了common-logging又引入了slf4j。后来通过排除quartz中的slf4j的依赖

解决了上述冲突的问题

1
2
3
4
5
6
7
8
9
10
<dependency>
                <groupId>org.quartz-scheduler</groupId>
                <artifactId>quartz</artifactId>
                <exclusions>
                    <exclusion>
                        <groupId>org.slf4j</groupId>
                        <artifactId>slf4j-api</artifactId>
                    </exclusion>
                </exclusions>
            </dependency>

以后该如何解决这种类似的问题呢。eclipse提供了对隐式依赖jar包的查看功能:在eclipse中打开一个pom文件,在Dependency Hierarchy的Tab页中,就可以查看当前pom文件中显示声明的jar包,及这些显示声明的jar中隐式引入的依赖jar包。

这样就可以查看有哪些隐式的依赖jar会导致jar包冲突了。

Maven 查看jar包依赖关系

使用eclipse操作,在项目中打开pom.xml文件进入Dependency Hierarchy 来查看依赖树

在这里插入图片描述


  • Dependency hierarchy:依赖层次视图

  • Resolved dependencies:依赖关系解析

点击右边jar或者搜索需要查找的jar可以在左边找到对应关系

比如在NewEnergyCheckDemo项目中启动springBoot工程控制台不打印错误信息,那一定是某个日志jar包有冲突导致的,我们就可以直接搜索要查找的jar,我们可以看到在pom.xml文件中依赖了

在这里插入图片描述

而Commons-vfs2这个jar包中又隐式依赖了commons-logging

在项目中我们又配置了spring-boot-starter-web的依赖

在这里插入图片描述

我们可以看到该jar包又隐式依赖了一些其他的jar包,如spring-boot-starter又包含了spring-boot-starter-logging,该依赖的内容就是springBoot默认的日志框架logback,所以我们在使用springBoot的日志框架时应该先排除commons-vfs2中commons-logging该jar包的依赖.

排除jar包依赖,找到需要排除的jar包点击右键如下图

在这里插入图片描述

排除依赖之后的pom.xml坐标如下

在这里插入图片描述

以上为个人经验,希望能给大家一个参考

原文链接:https://blog.csdn.net/majian_1987/article/details/45318191


    文章分类
    代码人生
    版权声明:本站是系统测试站点,无实际运营。本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 XXXXXXo@163.com 举报,一经查实,本站将立刻删除。
    相关推荐