<project>
<modelVersion>4.0.0</modelVersion>
<groupId>org.sonatype.mavenbook</groupId>
<artifactId>project-a</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>jar</packaging>
<build>
<finalName>org.sonatype.mavenbook-content-zh</finalName>
</build> </project>
...
<finalName>org.sonatype.mavenbook-project-a</finalName>
...
在Maven读取一个POM的时候,它会在载入POM XML的时候替换这些属性的引用。在Maven的高级使用中Maven属性经常出现,这些属性和其它系统中的属性如Ant或者Velocity类似。它们是一些由MavenProject: org.sonatype.mavenbook:content-zh:0.6-SNAPSHOT@ /usr/local/hudson/hudson-home/jobs/maven-guide-zh-to-production/workspace/content-zh/pom.xml划界的变量。Maven提供了三个隐式的变量,可以用来访问环境变量,POM信息,和Maven Settings:
env
env变量 暴露了你操作系统或者shell的环境变量。例如,在Maven POM中一个对/usr/lib/jvm/java-1.6.0-openjdk-1.6.0.0/bin:/usr/local/bin:/usr/local/maven/bin:/usr/kerberos/sbin:/usr/kerberos/bin:/usr/java/latest/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin:/usr/bin:/usr/local/bin的引用将会被/usr/local/bin:/usr/local/maven/bin:/usr/kerberos/sbin:/usr/kerberos/bin:/usr/java/latest/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin:/usr/bin:/usr/local/bin环境变量替换(或者Windows中的%PATH%)。
project
project变量暴露了POM。你可以使用点标记(.)的路径来引用POM元素的值。例如,在本节中我们使用过groupId和artifactId来设置构建配置中的finalName元素。这个属性引用的语法是:org.sonatype.mavenbook-${project.artifactId}。
settings
settings变量暴露了Maven settings信息。可以使用点标记(.)的路径来引用settings.xml文件中元素的值。例如,${settings.offline}会引用~/.m2/settings.xml文件中offline元素的值。
注意
你可能在老的构建中看到使用${pom.xxx}或者仅仅${xxx}来引用POM属性。这些方法已被弃用,我们只应该使用${project.xxx}。
Java系统属性
如:${java.home}
x
我们还可以通过pom.xml或者settings.xml中的properties元素设置自己的属性,或者还可以使用外部载入的文件中属性。如果你在pom.xml中设置了一个名为fooBar的属性,该属性就可以通过${fooBar}引用。当你构建一个系统,它针对不同的部署环境过滤资源,那么自定义属性就变得十分有用。这里是在POM中设置${foo}=bar的语法:
<properties>
<foo>bar</foo>
</properties>
参考《Maven权威指南中文版》