# Maven pom文件中属性变量有哪些 ## 前言 在Maven项目的`pom.xml`文件中,属性变量(Properties)是重要的配置元素之一。它们允许开发者定义可重用的值,并在整个POM文件中引用这些值,从而提高配置的灵活性和可维护性。本文将详细介绍Maven POM文件中常见的属性变量类型及其用法。 --- ## 一、属性变量的基本概念 属性变量在`pom.xml`中通过`<properties>`标签定义,格式为键值对(`<key>value</key>`)。定义后,可以通过`${key}`语法在POM文件中引用。 ### 示例 ```xml <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <java.version>11</java.version> </properties>
Maven提供了一些内置属性,无需定义即可直接使用:
${project.groupId}
:项目组ID${project.artifactId}
:项目构件ID${project.version}
:项目版本号${project.name}
:项目名称${project.description}
:项目描述${project.build.sourceDirectory}
:源代码目录(默认src/main/java
)${project.build.testSourceDirectory}
:测试代码目录(默认src/test/java
)${project.build.outputDirectory}
:编译输出目录(默认target/classes
)${project.build.testOutputDirectory}
:测试编译输出目录(默认target/test-classes
)${project.basedir}
:POM文件所在目录(即项目根目录)${project.parent.basedir}
:父POM文件目录(仅适用于子模块)开发者可以在<properties>
中定义任意自定义变量,常见用途包括:
<properties> <spring.version>5.3.18</spring.version> </properties> <dependencies> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-core</artifactId> <version>${spring.version}</version> </dependency> </dependencies>
<properties> <maven.compiler.source>11</maven.compiler.source> <maven.compiler.target>11</maven.compiler.target> </properties>
通过<resources>
配合属性变量实现动态替换:
<properties> <environment>dev</environment> </properties> <build> <resources> <resource> <directory>src/main/resources</directory> <filtering>true</filtering> </resource> </resources> </build>
通过${settings.xxx}
引用settings.xml
中的配置: - ${settings.localRepository}
:本地仓库路径
- ${settings.offline}
:是否为离线模式
${env.XXX}
:引用系统环境变量(如${env.JAVA_HOME}
)部分插件会暴露自身的属性供POM文件使用:
${surefire.skipTests}
:是否跳过测试${revision}
:动态版本号(需配合flatten-maven-plugin
使用)当同名属性存在多个来源时,Maven按以下顺序覆盖: 1. 命令行参数(如-Dkey=value
)
2. POM文件中的<properties>
3. settings.xml
中的属性
4. 环境变量
通过${key:-default}
语法设置默认值:
<version>${custom.version:-1.0.0}</version>
通过maven-resources-plugin
加载外部.properties
文件:
<build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-resources-plugin</artifactId> <configuration> <propertiesFiles> <propertiesFile>config.properties</propertiesFile> </propertiesFiles> </configuration> </plugin> </plugins> </build>
结合<profiles>
实现环境切换:
<profiles> <profile> <id>prod</id> <properties> <db.url>jdbc:mysql://prod-server:3306/db</db.url> </properties> </profile> </profiles>
合理使用属性变量能显著提升Maven项目的可维护性。通过内置属性、自定义变量和外部化配置的组合,开发者可以轻松实现多环境构建、依赖版本统一管理等需求。建议结合实际项目需求灵活运用本文介绍的特性。 “`
这篇文章涵盖了Maven POM文件中属性变量的核心知识点,包括内置属性、自定义属性、环境变量、插件属性等,并提供了实际示例和注意事项。如需扩展具体场景的用法,可进一步补充案例说明。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。