属性
在 Maven 中,定义属性(properties)是一个常见的做法,用来统一管理版本号、目录路径或者其他可复用的值,避免硬编码。属性是在 pom.xml 中 <properties> 标签中定义的。
定义属性
- Maven自动定义的属性,不建议随意更改:
xml
<project>
...
<properties>
<maven.compiler.source>8</maven.compiler.source>
<maven.compiler.target>8</maven.compiler.target>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
</project>- 我们也可以在
properties中自定义属性:
xml
<project>
...
<properties>
<java.version>17</java.version>
<spring.boot.version>3.2.0</spring.boot.version>
<my.custom.property>HelloWorld</my.custom.property>
</properties>
</project>使用属性
xml
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<version>${spring.boot.version}</version>
</dependency>内置属性
Maven 自带一些内置属性,我们可以直接使用:
| 属性 | 描述 |
|---|---|
${project.version} | 当前项目版本 |
${project.groupId} | 当前项目 GroupId |
${project.artifactId} | 当前项目 ArtifactId |
${project.basedir} | 表示 当前项目的根目录 |
他的值来自于我们在pom.xml中的配置:
xml
<project>
...
<groupId>org.example</groupId>
<artifactId>maven-demo</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>pom</packaging>
....
</project>可以省略 project.,但不建议这样做。为了构建的稳定性和配置的清晰度,坚持使用 ${project.version} 是开发中更稳妥的做法。
xml
<dependency>
<groupId>org.example</groupId>
<artifactId>controller</artifactId>
<version>${version}</version>
</dependency>注意事项
Maven 属性如果出现同名冲突,最终的解析规则是:按优先级覆盖,而不是报错。子层级属性会覆盖父层级属性。
xml
<properties>
<app.version>1.0</app.version>
<app.version>2.0</app.version>
</properties>最终 app.version = 2.0,Maven 不会报错或警告,前面的 1.0 会被直接覆盖。
