<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權威指南中文版》