Maven 中 <properties> 标签是定义全局常量最常用、最轻量的方式,用于统一管理版本号等重复值,支持全项目引用、父子模块继承,并推荐与 <dependencyManagement> 结合使用以确保版本一致性。

在 Maven 中,<properties> 标签是定义全局常量最常用、最轻量的方式,特别适合统一管理版本号、依赖坐标、插件配置等重复值。它不依赖额外插件,原生支持,修改一处即可全项目生效。
用 <properties> 定义版本常量
在 pom.xml 的 <properties> 块中声明自定义属性,例如:
<properties>
<spring-boot.version>3.2.5</spring-boot.version>
<logback.version>1.4.14</logback.version>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
这些属性可在整个 POM 中通过 ${spring-boot.version} 形式引用,比如在 <dependencies> 或 <plugin> 中复用。
立即学习“Java免费学习笔记(深入)”;
在依赖和插件中引用属性
把版本号抽成属性后,所有依赖声明只需写一次变量,避免硬编码:
- 依赖示例:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<version>${spring-boot.version}</version>
</dependency> - 插件示例:
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<version>${spring-boot.version}</version>
</plugin>
父子模块间共享属性(多模块项目)
在父 POM 中定义 <properties>,子模块自动继承,无需重复声明:
- 父 POM 写好公共版本,如
<java.version>17</java.version> - 子模块的
<properties>可覆盖或补充,不影响父级定义 - 子模块引用时仍用
${java.version},Maven 会按继承链解析
配合 dependencyManagement 统一依赖版本
仅靠 <properties> 还不够严谨——它只是字符串替换。更推荐组合使用 <dependencyManagement>:
- 在父 POM 的
<dependencyManagement>中用属性声明依赖版本 - 子模块只写
<groupId>和<artifactId>,省略<version> - 这样既保证版本集中控制,又避免子模块意外指定不同版本


















