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>:将依赖标记为可选

相关推荐
二哈赛车手几秒前
新人笔记---多策略搭建策略执行链实现RAG检索后过滤
java·笔记·spring·设计模式·ai·策略模式
PESS ABIN1 分钟前
JavaWeb项目打包、部署至Tomcat并启动的全程指南(图文详解)
java·tomcat
AI进化营-智能译站7 分钟前
ROS2 C++开发系列15-模板实现通用算法|宏定义ROS2调试开关|一次编码适配多平台
java·c++·算法·ai
刀法如飞10 分钟前
Java数组去重的20种实现方式——指导AI解决不同问题的思路
java·算法·面试
薪火铺子19 分钟前
SpringMVC请求处理流程源码解析(第1篇):请求入口与处理器映射
java·后端·spring
ch.ju19 分钟前
Java程序设计(第3版)第二章——参数(实参 形参)
java
椰猫子21 分钟前
SpringMVC(SpringMVC简介、请求与响应(请求映射路径、请求参数、日期类型参数传递、响应json数据))
java·前端·数据库
海兰23 分钟前
【开篇】Spring AI、OpenClaw 和Hermes
java·人工智能·spring·spring ai
bzmK1DTbd31 分钟前
微服务架构设计:Spring Cloud Gateway与Nacos集成
java·spring·微服务
上弦月-编程32 分钟前
指针编程:高效内存管理核心
java·数据结构·算法