写点什么

记录一次解决 Maven 依赖冲突的过程

  • 2023-05-16
    湖南
  • 本文字数:759 字

    阅读完需:约 2 分钟

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

处理

  1. 首先查看控制台报错日志

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

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


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

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

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

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

排除掉 log4j 依赖,问题解决

回顾

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


作者:千云

链接:https://juejin.cn/post/7233216023277158459

来源:稀土掘金

用户头像

还未添加个人签名 2021-07-28 加入

公众号:该用户快成仙了

评论

发布
暂无评论
记录一次解决Maven依赖冲突的过程_Java_做梦都在改BUG_InfoQ写作社区