Maven 属性引用

一个POM可以通过一对大括弧和前面一个美元符号来包含 对属性的引用。例如,考虑如下的POM:
<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>
如果你将这段XML放入pom.xml,然后运行mvn help:effective-pom,你会看到输出包含这一行:
...
<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权威指南中文版》

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章