Java项目依赖版本由构建工具自动解析依赖图决定,可通过dependencyManagement统一约束多模块版本、exclusions排除传递依赖、BOM管理版本等机制精准控制。
Java项目依赖版本不是靠手动改jar包决定的,而是由构建工具在解析依赖图时自动选择——你真正能控制的,只有声明的版本范围和冲突解决策略。
用 dependencyManagement 统一约束子模块版本
多模块项目里,各 pom.xml 单独写 容易不一致。把公共依赖版本提到父POM的 块里,子模块只需声明 和 ,不写 也能继承版本。
注意:这不会引入依赖,只是“约定”;子模块仍需在 中显式声明才能生效。
-
、等配置在中也有效,会被子模块继承 - Spring Boot 的
spring-boot-dependenciesBOM 就是靠这个机制统一管理数百个依赖版本 - 若子模块想覆盖父级版本,直接在自己的
里写死即可(但不推荐)
理解 mvn dependency:tree 输出中的版本来源
执行 mvn dependency:tree -Dverbose 是排查版本冲突最直接的方式。关键看每行末尾的括号内容:
立即学习“Java免费学习笔记(深入)”;