maven 依赖优先级排查

大家好,我叫大鸡腿,大家可以关注下我,会持续更新技术文章还有人生感悟,感谢~

在这里插入图片描述

前言

在一次新项目搭建的时候,发现mysql-connector-java版本不兼容,然后改了下版本,发现还是版本有问题,下面讲下修复过程

排查过程

  1. 由于父pom文件已经声明mysql-connector-java 5.1.41
  2. 那我在子pom 定义版本号
    在这里插入图片描述
    3.idea查看下jar引入情况
    在这里插入图片描述
    4.查看启动时,用到jar版本
    在这里插入图片描述
    5.这里就有点疑问,明明我已经改了版本号了,为啥还是用了父pom版本号?

背景

说下jar引入的关系
有个core项目,引入springboot契约,然后里面声明了版本号
在这里插入图片描述
然后子项目A,依赖core pom文件,按照继承关系mysql-connector-java也会引进来
介绍完项目结构,说下刚刚的场景,修改core项目版本号,发现A项目还是引入父契约的版本号。

修复

1.看下maven依赖树
在这里插入图片描述
A项目依赖core项目,但是拉下来是5.1.41版本
2.看下core依赖
在这里插入图片描述
3.core是正常的,A项目有问题
4.我们看下maven依赖优先等级
在这里插入图片描述
5.看到第三点:我们就明白什么原因了,A项目依赖core pom文件,然后父pom文件先声明,用声明的版本
除非说在A项目dependencies进行引用

解决方案

1.子pom dependencyManagement直接覆盖父pom文件dependencyManagement
在这里插入图片描述
2.覆盖父pom文件参数定义
在这里插入图片描述
在这里插入图片描述
3.在子项目dependencies修改版本号

总结:比较好的是在core项目dependencyManagement覆盖声明,或者覆盖父类参数定义

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值