事实上有六种类型的Maven属性:
内置属性:主要有两个常用内置属性——
${basedir}表示项目根目录,即包含pom.xml文件的目录;
${version}表示项目版本。
POM属性:pom中对应元素的值。例如${project.artifactId}对应了<project><artifactId>元素的值。常用的POM属性:
${project.build.sourceDirectory} 项目的主源码目录,默认src/main/java
${project.build.testSourceDirectory} 项目的测试源码目录,默认src/test/java
${project.build.directory} 项目的构建输出目录,默认target/
${project.outputDirectory} 项目的主代码编译输出目录,默认target/classes/
${project.testOutputDirectory} 项目的测试代码编译输出目录,默认target/test-classes/
${project.groupId} 项目的groupId
${project.artifactId} 项目的artifactId
${project.version} 项目的version
${project.build.finalName} 项目打包输出文件的名称,默认为${project.artifactId}-${project.version}
自定义属性:在pom中<properties>元素下自定义的Maven属性
<properties>
<!-- Generic properties -->
<java.version>1.6</java.version>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<org.aspectj.version>1.6.11</org.aspectj.version>
<!-- Spring -->
<org.springframework.version>3.2.3.RELEASE</org.springframework.version>
<!-- Logging -->
<logback.version>1.0.13</logback.version>
<slf4j.version>1.7.5</slf4j.version>
<!-- Test -->
<junit.version>4.11</junit.version>
<checkstyle.config.location>config/maven_checks.xml</checkstyle.config.location>
</properties>
Settings属性:与POM属性同理。如${settings.localRepository}指向用户本地仓库的地址
Java系统属性:所有Java系统属性都可以使用Maven属性引用,例如${user.home}指向了用户目录。可以通过命令行mvn help:system查看所有的Java系统属性
资源过滤
可以资源文件中使用属性变量
db.Driver=${db.Driver}
db.url=${db.url}
db.user=${db.user}
db.password=${db.password}
在POM中
<resources>
<resource>
<directory>${project.basedir}/src/main/resource</directory>
<filtering>true</filtering>
</resource>
</resources>
<
profiles>
<
profile>
<id>test1</id>
<activation>
<property>
<name>env</name>
<value>dev1</value>
</property>
</activation>
<properties>
<db.Driver>org.gjt.mm.mysql.Driver</db.Driver>
<db.url>jdbc:mysql://localhost:3306/uxian99</db.url>
<db.user>liuyan</db.user>
<db.password>111111</db.password>
</properties>
</profile>
<
profile>
<id>test2</id>
<activation>
<property>
<name>env</name>
<value>dev2</value>
</property>
</activation>
<properties>
<db.Driver>com.mysql.jdbc.Driver</db.Driver>
<db.url>jdbc:mysql://192.168.1.109:3306/uxian99</db.url>
<db.user>dba</db.user>
<db.password>dba</db.password>
</properties>
</profile>
</profiles>
mvn clean package –Ptest2
mvn clean package -Denv=dev1