Maven传递依赖的坑:父pom中dependencyManagement版本优先级高于传递依赖版本

一、由来#

之前同事问了个问题,就是当前工程为spring boot项目,假设版本号为2.0.3

 

这个项目中依赖了一个spring boot项目依赖(先别管为啥有这么奇葩的依赖,这个版本是1.5.9)。

1.5.9的版本,会传递一堆starter过来。

结果最终看到的是,所有的starter版本都是2.0.3。

 

二、原因#

maven官方有下面一段话:

https://maven.apache.org/guides/introduction/introduction-to-dependency-mechanism.html

 

 翻译下:

Dependency management:允许项目作者直接指定artifact的版本,当该组件是通过传递依赖传递过来,或者为没有指定版本号的直接依赖。

 

再回头看前言里的问题,就是当前工程继承了spring boot parent 2.0.3,然后里面的<dependencyManagement>指定了各组件的版本号。这时候被依赖的1.5.9的组件,作为传递依赖,其版本号就会使用2.0.3.

 

三、参考#

也有人遇到了同样问题:

https://blog.csdn.net/zwt0909/article/details/52372765

https://blog.csdn.net/jiaobuchong/article/details/81842503

 




posted @   三国梦回  阅读(11367)  评论(0编辑  收藏  举报
编辑推荐:
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
阅读排行:
· 周边上新:园子的第一款马克杯温暖上架
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?
· 使用C#创建一个MCP客户端
点击右上角即可分享
微信分享提示
CONTENTS