IDEA中解决重复依赖问题(Maven)

背景

  1. 很多是时候,在使用maven依赖jar包时,会由于某个jar包被重复依赖,且版本不一致,导致项目无法启动,或启动后,使用某个jar包报错
  2. 如:最常见 log4j-api 依赖包版本不一致,导致启动项目时报红

解决示例:

  1. 示例
    • 比如:当前项目中存在重复依赖mybatis:3.5.9 和 mybatis:3.5.10,如下(图1)所示
    • 现在我们想保留mybatis:3.5.10,排除掉mybatis:3.5.9
    • 下图就是idea显示的当前项目依赖关系图,从图中我们可以看出,mybatis存在重复依赖,且版本不一致
      图1
  2. 第一步:显示module中所有依赖关系图(多module时,哪个module存在重复依赖,就显示哪个)
    • 在idea右侧【toolbar】中,打开【maven】工具窗口
    • 选中【需要处理的model】,然后点击【show dependencies】
    • 如下(图2)所示
      图2
  3. 第二步:搜索存在冲突的依赖包名
    • 在【依赖关系图】窗口中,按【Ctrl + F】进行打开【Diagram Elements】窗口,然后直接搜索存在冲突的依赖包名称
    • 比如:当前我的项目中,mybatis存在重复依赖包,所以搜【mybatis】
    • 注意:虽然 Diagram Elements 窗口没有搜索框,但是当键入字符时,会自动进入搜索模式
    • 如下(图3)所示
      图3
  4. 第三步:抽取选中依赖包的整个依赖关系图
    • 搜索到需要的依赖后,鼠标直接点击依赖包,再点击【Root -> Selection】按钮,idea会自动将依赖从Root(根)到当前所选的依赖包的关系图给抽离出来,并展示
    • 比如:这里我们想找到【mybatis:3.5.10】这个依赖,如下(图4)所示
      图4
    • 当我们点击【Root->Selection】后,idea将选中依赖关系图抽取如下(图5)所示
      图5
    • 如果觉得不方便看,可以选择【Export Diagram】按钮,将关系图导出,操作如下(图6)所示
      图6
    • 操作导出后,idea会自动在浏览器中打开到处结果,并如下(图7)所示
      图7
  5. 第四步:分析依赖关系
    • 从上面(图5)或(图7)中,我们没有看到【mybatis:3.5.10】与哪个包存在重复依赖,所以,我们需要再去检查一下【mybatis:3.5.9】依赖包是否有问题。
    • 同理,我们将【mybatis:3.5.9】依赖包关系图抽取出来,如下(图8和图9)所示
      图8
      图9
  6. 第五步:找到重复依赖是从哪里被引入进来的(以便后续分析和解决问题)
    • 从上面 图8图9 中,我们并不知道【mybatis:3.5.9】是从哪个依赖包中被引入进来的。
    • 想要找到【mybatis:3.5.9】是从哪个依赖包中引入进来的,只需要双击【mybatis:3.5.9】依赖包(下图10),idea就会自动打开其父依赖的所在pom文件
      图10
    • 我们从idea自动打开的pom文件中(下图11),可以确认【mybatis:3.5.9】是在【mybatis-spring-boot-starter-2.2.2.pom】中引入的
      图11
    • 抽取【mybatis:3.5.9】的父依赖【mybatis-spring-boot-starter:2.2.2】的依赖关系图,结果如下(图12 和 图13)所示
      图12
      图13
  7. 第六步:确定取舍依赖包
    • 上面找到了【mybatis:3.5.9】和 【mybatis:3.5.10】两个依赖的关系图(为了方便,我将两个依赖图放在下面一起看)。接下来就是要分析这两个依赖,应该要排除掉哪个依赖,保留哪个依赖
    • 【mybatis:3.5.10】是项目中的【mybatis-plus-boot-starter:3.5.2】引入的,该jar包是用来进行数据库操作的
    • 【mybatis:3.5.9】是项目中【pagehelper-spring-boot-starter:1.4.6】引入的,该jar包是用来进行分页的插件
    • 故:从影响面考虑,应该排除【pagehelper-spring-boot-starter:1.4.6】引入的【mybatis:3.5.9】
    • Tips这里,我们可以发现,其实在搜【mybatis:3.5.9】时,就已经给出其依赖关系图,只是少了一个连接线而已(如下左边图中红线)
      图14
  8. 第七步:排除重复依赖
    • 根据上面分析的结果,本次示例中,我们需要排除【mybatis:3.5.9】依赖包
    • 【mybatis:3.5.9】是被【pagehelper-spring-boot-starter:1.4.6】引入进来的
    • 故:在引入【pagehelper-spring-boot-starter:1.4.6】的地方,进行排除操作即可,如下(图15)所示
      图15
  9. 最后:验证排除结果
    • 再次打开【show dependencies】,并搜索【mybatis】发现此时只有一个【mybatis:3.5.10】依赖包
    • 如下(图16)所示
      图16
  • 26
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
添加maven依赖报错可能有多种原因,以下是一些常见的解决方案: 1. 检查maven仓库配置是否正确。确保maven的配置路径和本地仓库的配置正确,包括settings.xml和仓库地址等配置项。\[1\] 2. 清理maven缓存。使用clean命令清理maven缓存,并在刷新后重新执行操作。同时,清理IDEA的缓存并重启项目也可能有帮助。\[2\] 3. 解决jar包冲突问题。可以使用插件来查看是否存在重复依赖,并根据需要下载正确的依赖。如果下载的依赖问题,可以尝试删除本地仓库的缓存文件并重新下载。\[2\] 4. 检查依赖的版本兼容性。有时候,依赖的版本可能与使用的JDK版本或项目的maven版本不兼容。尝试切换依赖的版本或确保maven版本与项目版本相同。\[2\] 如果以上方法都没有解决问题,可以尝试以下操作: 1. 检查pom文件报错。如果pom文件报错,可以尝试执行第3步操作。\[3\] 2. 检查idea右侧的MavenProject插件报错。如果插件报错,同样可以尝试执行第3步操作。\[3\] 3. 找到对应的pom文件,将其剪切并重新导入maven,然后再将剪切的内容粘贴回原位置。这样可以重新导入依赖解决问题。\[3\] 希望以上解决方案能够帮助您解决添加maven依赖报错问题。 #### 引用[.reference_title] - *1* *3* [IDEA-maven报错问题解决方案(四步解决-详细版本)](https://blog.csdn.net/weixin_45536587/article/details/103968145)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [IDEAmaven依赖报错解决方案](https://blog.csdn.net/qq_42074921/article/details/85322513)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值