属性与变量替换
properties 元素定义自定义属性,在配置中引用实现变量替换。
属性定义
基本语法
XML
<properties>
<java.version>17</java.version>
<spring.version>5.3.20</spring.version>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
引用属性
XML
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>${spring.version}</version>
</dependency>
内置属性
项目属性
| 属性 | 说明 | 示例值 |
|---|---|---|
| ${project.groupId} | 项目 groupId | com.example |
| ${project.artifactId} | 项目 artifactId | my-app |
| ${project.version} | 项目版本 | 1.0.0 |
| ${project.name} | 项目名称 | My Application |
| ${project.basedir} | 项目根目录 | /home/user/my-app |
| ${project.build.directory} | 构建目录 | target |
| ${project.build.sourceDirectory} | 源码目录 | src/main/java |
Maven 属性
| 属性 | 说明 |
|---|---|
| ${maven.version} | Maven 版本 |
| ${maven.build.timestamp} | 构建时间戳 |
环境变量属性
XML
<!-- 引用系统环境变量 -->
${env.JAVA_HOME}
${env.PATH}
${env.MAVEN_HOME}
示例
XML
<properties>
<java.home>${env.JAVA_HOME}</java.home>
</properties>
系统属性
XML
<!-- 引用 Java 系统属性 -->
${java.version}
${java.home}
${user.home}
${os.name}
自定义属性使用场景
统一版本管理
XML
<properties>
<spring.version>5.3.20</spring.version>
<junit.version>4.13.2</junit.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>${junit.version}</version>
<scope>test</scope>
</dependency>
</dependencies>
编译器配置
XML
<properties>
<maven.compiler.source>17</maven.compiler.source>
<maven.compiler.target>17</maven.compiler.target>
</properties>
<!-- 或在 build 中配置 -->
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>${maven.compiler.source}</source>
<target>${maven.compiler.target}</target>
</configuration>
</plugin>
</plugins>
</build>
资源过滤
启用过滤
XML
<build>
<resources>
<resource>
<directory>src/main/resources</directory>
<filtering>true</filtering>
</resource>
</resources>
</build>
资源文件使用属性
properties
# application.properties
app.version=${project.version}
app.name=${project.name}
build.time=${maven.build.timestamp}
java.home=${java.home}
构建后结果
XML
app.version=1.0.0
app.name=My Application
build.time=20260523-140530
java.home=/usr/lib/jvm/java-17
Profile 属性
text
<profiles>
<profile>
<id>dev</id>
<properties>
<db.url>jdbc:mysql://localhost:3306/dev</db.url>
</properties>
</profile>
<profile>
<id>prod</id>
<properties>
<db.url>jdbc:mysql://prod-server:3306/prod</db.url>
</properties>
</profile>
</profiles>
要点总结
- properties 定义自定义属性,${property} 引用
- 内置属性:project.、maven.
- 环境属性:${env.XXX}
- 系统属性:${java.version}、${user.home}
- filtering=true 启用资源文件变量替换
- 统一版本管理:定义一个属性,多处引用
📝 发现内容有误?点击此处直接编辑