解决Maven依赖冲突的方法

 更新时间:2023年05月15日 11:12:30   作者:千云  
本文主要介绍了解决Maven依赖冲突的方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

背景

在项目中screw-core依赖时发生了冲突,控制台指出是log4j产生的依赖冲突,导致程序报错无法运行,是一个典型的maven依赖冲突,基于这个问题进行

处理

处理首先查看控制台报错日志

0581f3b44a0a2055c4d4b0b0587ae213.jpg

基于这个报错在pom依赖中查看一下

image.png

screw-corey依赖是这次新增加的依赖,也就是说依赖冲突是由于screw-core依赖和原有的依赖产生了冲突,具体是哪个依赖,我们打开screw-core依赖进行查看他的依赖,奇怪的是并没有看到screw-core中存在log4j的引用,这时候想到一个idea的插件 maven-helper

maven-helper这个插件是专门帮助我们解决maven依赖冲突的插件,使用时可以看到具体的依赖冲突是哪些依赖,我进行了安装使用

image.png

首先进入pom文件,安装插件后会看到左下角有一个Dependency Analyzer按钮,点击一下,我们可以看到依赖冲突

image.png

依赖冲突有很多,其实这里面的依赖冲突就是不同的依赖引用了不同的版本jar包,但是很多是没有影响的,这里面差生影响的就是log4j-api,我们看到项目中有两个版本,一个是2.17.0,一个是2.11.2

image.png

点击2.17.0jump to source 可以看到他的引用,根据pom发现他是在引入screw-core之前就已经存在的依赖,这就说明随着screw-corey依赖的引入,导入了2.11.2版本的log4j,进而导致依赖冲突,然而在screw-core的依赖引入中没有看到,就说明是他的下一层架依赖引入或者多层级依赖引入导致的问题。这时候我采用了排除法,对screw-core中类似log4j的依赖逐个排除

image.png

排除掉log4j依赖,问题解决

回顾

对于maven-helper的idea插件,在市面上是比较火的,但是使用起来并没有达到我理想中的期望,比如直接找到冲突的依赖,直接排除掉,看了些网上的教程,对于简单的以来冲突maven-helper可以较快的定位到,但是对于向我遇到的问题,还是需要慢慢的去排查,总之问题解决了,也算是很有收获。

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

相关文章

  • 关于log4j漏洞修复解决方案及源码编译

    关于log4j漏洞修复解决方案及源码编译

    Log4j 是Apache为Java提供的日志管理工具。他与System.out.println()的作用相似,用来跟踪、调试、维护程序。这篇文章主要介绍了关于log4j漏洞修复解决方案及源码编译,需要的朋友可以参考下
    2021-12-12
  • springboot 实现记录业务日志和异常业务日志的操作

    springboot 实现记录业务日志和异常业务日志的操作

    这篇文章主要介绍了springboot 实现记录业务日志和异常业务日志的操作,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-07-07
  • JavaMail实现发送邮件功能

    JavaMail实现发送邮件功能

    这篇文章主要为大家详细介绍了JavaMail实现发送邮件功能,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-08-08
  • SpringBoot整合Javamail实现邮件发送功能

    SpringBoot整合Javamail实现邮件发送功能

    邮件发送是一个很普遍的功能,springboot整合了相关的starter,本文给大家介绍了可以实现一个简单的邮件发送功能的实例,文中通过代码给大家介绍的非常详细,感兴趣的朋友可以参考下
    2023-12-12
  • SpringBoot实现跨域的几种常用方式总结

    SpringBoot实现跨域的几种常用方式总结

    跨域是指一个域下的文档或脚本试图去请求另一个域下的资源,或者涉及到两个不同域名的资源之间的交互,由于同源策略(Same Origin Policy)的限制,浏览器不允许跨域请求,本文小编给大家分享了SpringBoot实现跨域的几种常用方式,需要的朋友可以参考下
    2023-09-09
  • Mybatis-plus使用selectList查询数据为null的问题及解决办法

    Mybatis-plus使用selectList查询数据为null的问题及解决办法

    这篇文章主要介绍了Mybatis-plus使用selectList查询数据为null的问题及解决方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-07-07
  • SpringBoot @Schedule的使用注意与原理分析

    SpringBoot @Schedule的使用注意与原理分析

    这篇文章主要介绍了SpringBoot @Schedule的使用注意与原理分析,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-08-08
  • 在logback.xml中自定义动态属性的方法

    在logback.xml中自定义动态属性的方法

    这篇文章主要介绍了在logback.xml中自定义动态属性的方法,非常不错,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-08-08
  • Spring Boot项目中结合MyBatis实现MySQL的自动主从切换功能

    Spring Boot项目中结合MyBatis实现MySQL的自动主从切换功能

    这篇文章主要介绍了Spring Boot项目中结合MyBatis实现MySQL的自动主从切换功能,本文分步骤给大家介绍的非常详细,感兴趣的朋友一起看看吧
    2025-04-04
  • Java 如何快速实现一个连接池

    Java 如何快速实现一个连接池

    有没有一个通用的库可以快速实现一个线程池呢?得益于 Java 完善的生态,前人们针对这种需要开发了一个通用库:Apache Commons Pool(下文简称 ACP)。本质上来说,ACP 库提供的是管理对象池的通用能力,当然也可以用来管理连接池了!
    2021-05-05

最新评论