maven依赖的优先级
优先级
在 Maven 中,依赖的解析顺序和优先级如下:
直接依赖优先级高于传递性依赖: 如果你在项目的 pom.xml 中直接声明了某个依赖项,那么 Maven 会首先尝试使用这个直接声明的依赖项,而不考虑传递性依赖。直接依赖项的版本号会优先于传递性依赖。
最近者优先: 如果有多个传递性依赖解析到相同的依赖项,Maven 将选择距离项目最近的那个依赖项。这意味着,离项目更近的依赖项的版本会被选择。
先声明者优先: 如果有多个传递性依赖解析到相同的依赖项,并且它们距离项目的距离相同,则 Maven 将选择最先声明的那个依赖项。
实战
micrometer-core 被两个库依赖:
- influxdb-spring,依赖micrometer-core的1.11.3版本
- spring-boot-starter-actuator,依赖micrometer-core的1.9.16版本
根据“最近着优先”原则,最终maven选择的是1.9.16版本。
“omitted for conflict with:1.9.16” 意思是 “和版本1.9.16冲突,被省略”,也就是不加载1.11.3版本。
如果硬要使用1.11.3版本,方法就是提高1.11.3版本的依赖优先级。
方案一:
<dependency>
<groupId>io.micrometer</groupId>
<artifactId>micrometer-registry-influx</artifactId>
<version>1.11.3</version>
</dependency>
方案二:
<dependency>
<groupId>io.micrometer</groupId>
<artifactId>micrometer-core</artifactId>
<version>1.11.2</version>
</dependency>
都可以。
扩展学习
maven的optional参数:
https://cloud.tencent.com/developer/article/1756145
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!