Maven 中通过 统一管理版本号,核心是将版本值抽为变量:在 下 块中声明如 3.2.0,依赖中用 ${spring-boot.version} 引用;父子模块自动继承,配合 可约束传递依赖并防止子模块误设版本。

在 Maven 中用 <properties></properties> 管理统一版本号,核心是把版本值抽出来当变量用,改一处、全生效。
在 pom.xml 里定义 version 属性
在 <project></project> 标签下添加 <properties></properties> 块,用有意义的键名声明版本值。比如:
<spring-boot.version>3.2.0</spring-boot.version><junit.version>5.10.0</junit.version><mysql.version>8.0.33</mysql.version>
这些不是必须带 .version 后缀,但约定俗成,可读性高。也可以顺便定义编译和编码属性:<project.build.sourceencoding>UTF-8</project.build.sourceencoding>、<maven.compiler.source>17</maven.compiler.source>。
在 dependency 中引用属性
写依赖时,把硬编码的 <version></version> 换成占位符即可:
在调试 Java 后端 API 故障时使用此技能,尤其适用于以下任务:分析日志、跨 Controller、Service 和 Mapper 层追踪请求、定位异常根因、检查 SQL 执行或参数流转,以及生成简洁的诊断结论与修复方案。
立即学习“Java免费学习笔记(深入)”;
<version>${spring-boot.version}</version><version>${junit.version}</version>
注意:只支持在当前 pom 及其子模块中使用(继承生效),不能跨项目直接引用。如果子模块想覆盖某个版本,可以在自己 pom 的 <properties></properties> 里重定义同名属性。
配合 dependencyManagement 更可靠
仅靠 <properties></properties> 无法约束传递依赖或 BOM 场景下的版本。推荐搭配 <dependencymanagement></dependencymanagement> 使用:
- 在父 POM 的
<dependencymanagement></dependencymanagement>中声明坐标 +${xxx.version} - 子模块的
<dependencies></dependencies>里只需写<groupid></groupid>和<artifactid></artifactid>,省略<version></version> - 这样既统一了版本,又防止子模块误写不同版本
多模块项目中自动继承
父 POM 定义的 <properties></properties> 默认被所有子模块继承,无需重复声明。Maven 3.5.0+ 还支持 ${revision} 占位符,结合 flatten-maven-plugin 可实现构建时动态替换全局版本,适合 CI/CD 流水线发布。

















