maven 依赖优先级排查
Posted go大鸡腿
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了maven 依赖优先级排查相关的知识,希望对你有一定的参考价值。
前言
在一次新项目搭建的时候,发现mysql-connector-java版本不兼容,然后改了下版本,发现还是版本有问题,下面讲下修复过程
排查过程
- 由于父pom文件已经声明mysql-connector-java 5.1.41
- 那我在子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覆盖声明,或者覆盖父类参数定义
以上是关于maven 依赖优先级排查的主要内容,如果未能解决你的问题,请参考以下文章