Maven通过<properties>标签定义全局版本占位符实现统一版本管理,支持在dependencies和plugins中用${property.name}引用,仅限<version>等字段,支持继承覆盖与profile环境差异化控制。

在 Maven 中,可以通过 <properties> 标签定义全局版本占位符,实现统一管理依赖、插件或模块版本,避免硬编码和重复修改。
在 pom.xml 的 properties 中定义版本变量
将常用版本号声明为 property,放在 <project> 标签下层级的 <properties> 中:
- 位置必须在
<modelVersion>之后、<dependencies>或<dependencyManagement>之前 - 命名建议用小写字母加点号或短横线,如
spring-boot.version或junit.version - 值直接写版本字符串,例如
2.7.18,不带引号
示例:
<properties> <spring-boot.version>3.2.4</spring-boot.version> <junit-jupiter.version>5.10.2</junit-jupiter.version> <maven-compiler-plugin.version>3.11.0</maven-compiler-plugin.version> </properties>
在 dependencies 和 plugins 中引用这些占位符
使用 ${property.name} 语法替换实际版本号,Maven 会在解析时自动展开:
立即学习“Java免费学习笔记(深入)”;
- 依赖中:
<version>${spring-boot.version}</version> - 插件中:
<version>${maven-compiler-plugin.version}</version> - 也可用于
<dependencyManagement>统一约束子模块版本
注意:不能在 <groupId> 或 <artifactId> 中使用 property,只支持 <version> 和部分插件配置项(如 <source>、<target>)。
支持多级继承与覆盖机制
父 POM 定义的 property 可被子模块继承;子模块可重新赋值同名 property 实现局部覆盖:
- 父 pom 定义
<logback.version>1.4.11</logback.version> - 子 pom 写
<logback.version>1.4.14</logback.version>即生效 - 命令行也可覆盖:
mvn clean package -Dlogback.version=1.4.14
这种机制适合多模块项目按需升级个别组件,同时保持整体版本基线一致。
配合 profile 实现环境差异化版本控制
在不同 profile 下定义相同 property 名但不同值,结合激活条件切换版本:
<profiles>
<profile>
<id>dev</id>
<properties>
<my-api.version>1.0.0-SNAPSHOT</my-api.version>
</properties>
</profile>
<profile>
<id>prod</id>
<properties>
<my-api.version>1.0.0-RELEASE</my-api.version>
</properties>
</profile>
</profiles>
运行时用 -Pdev 或 -Pprod 激活对应 profile,版本自动适配。


















