Maven 依赖调解的两大原则

Maven 依赖调解是 Maven 解决项目中多个依赖版本冲突的机制。当项目直接或间接依赖了同一个库的不同版本时,Maven 需要决定最终使用哪个版本。

依赖调解的两大原则

最短路径优先

  • 如果不同版本的依赖通过不同路径引入,Maven 会选择依赖路径最短的版本

    A -> B -> C -> D 1.0
    A -> E -> D 2.0

这里 D 2.0 的路径更短(A->E->D vs A->B->C->D),所以会选择 D 2.0

先声明优先

  • 如果两个依赖路径长度相同,则在 POM 文件中先声明的依赖会被采用

    A -> B -> D 1.0
    A -> C -> D 2.0

如果 B 在 POM 中先于 C 声明,则选择 D 1.0


补充:

查看依赖关系

可以使用以下命令查看依赖树,分析依赖冲突:

复制代码
mvn dependency:tree

解决依赖冲突的方法

  1. 显式声明版本:在 POM 中直接指定你想要的版本

  2. 排除依赖 :使用 <exclusions> 排除不需要的传递性依赖

  3. 使用 dependencyManagement:在父 POM 中统一管理版本

  4. 使用 <optional>true</optional>:将依赖标记为可选

相关推荐
karry_k17 分钟前
什么是Fork/Join?
java·后端
卷Java20 分钟前
小程序前端功能更新说明
java·前端·spring boot·微信小程序·小程序·uni-app
magicalmuggle31 分钟前
Java 后端开发复习指南
java·spring
Elieal36 分钟前
SpringMVC 进阶:核心组件详解与参数绑定全攻略
spring·maven
南方者1 小时前
【JAVA】【BUG】经常出现的典型 bug 及解决办法
java·oracle·bug
初圣魔门首席弟子2 小时前
c++嵌套类和局部类详细介绍
java·开发语言·c++
nice_lcj5202 小时前
Java 集合框架之 List 全面解析(从概念到实践)
java·windows·list
高山上有一只小老虎3 小时前
输出单向链表中倒数第k个结点
java·数据结构·链表
失散134 小时前
分布式专题——22 Kafka集群工作机制详解
java·分布式·云原生·架构·kafka
咖啡Beans4 小时前
SseEmitter + WebClient + Flux实现SSE事件流推送
java·spring boot·flux