【无标题】Maven的属性引用

一个POM可以通过一对大括弧和前面一个美元符号来包含 对属性的引用。例如,考虑如
下的POM:

4.0.0
org.sonatype.mavenbook
project-a
1.0-SNAPSHOT
jar

org.sonatype.mavenbook-content-zh


如果你将这段XML放入pom.xml,然后运行mvn help:effective-pom,你会看到输出包含
这一行:

org.sonatype.mavenbook-project-a

在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-
p r o j e c t . a r t i f a c t I d 。 s e t t i n g s s e t t i n g s 变量暴露了 M a v e n s e t t i n g s 信息。可以使用点标记( . )的路径来引用 s e t t i n g s . x m l 文件中元素的值。例如, {project.artifactId}。 settings settings变量暴露了Maven settings信息。可以使用点标记(.)的路径来引 用settings.xml文件中元素的值。例如, project.artifactIdsettingssettings变量暴露了Mavensettings信息。可以使用点标记(.)的路径来引用settings.xml文件中元素的值。例如,{settings.offline}会引用~/.m2/
settings.xml文件中offline元素的值。
注意
你可能在老的构建中看到使用 p o m . x x x 或者仅仅 {pom.xxx}或者仅仅 pom.xxx或者仅仅{xxx}来引用POM属性。这
些方法已被弃用,我们只应该使用 p r o j e c t . x x x 。除了这三个隐式的变量,你还可以引用系统属性,以及任何在 M a v e n P O M 中和构建 p r o f i l e 中自定义的属性组。 J a v a 系统属性所有可以通过 j a v a . l a n g . S y s t e m 中 g e t P r o p e r t i e s ( ) 方法访问的属性都被暴露成 P O M 属性。一些系统属性的例子是: h u d s o n , / h o m e / h u d s o n , / u s r / l i b / j v m / j a v a − 1.6.0 − o p e n j d k − 1.6.0.0 / j r e ,和 L i n u x 。一个完整的系统属性列表可以在 j a v a . l a n g . S y s t e m 类的 J a v a d o c 中找到。 x 我们还可以通过 p o m . x m l 或者 s e t t i n g s . x m l 中的 p r o p e r t i e s 元素设置自己的属性,或者还可以使用外部载入的文件中属性。如果你在 p o m . x m l 中设置了一个名为 f o o B a r 的属性,该属性就可以通过 {project.xxx}。 除了这三个隐式的变量,你还可以引用系统属性,以及任何在Maven POM中和构建 profile中自定义的属性组。 Java系统属性 所有可以通过java.lang.System中getProperties()方法访问的属性都被暴露 成POM属性。一些系统属性的例子是:hudson,/home/hudson,/usr/lib/jvm/ java-1.6.0-openjdk-1.6.0.0/jre,和Linux。一个完整的系统属性列表可以 在java.lang.System类的Javadoc中找到。 x 我们还可以通过pom.xml或者settings.xml中的properties元素设置自己的属 性,或者还可以使用外部载入的文件中属性。如果你在pom.xml中设置了一个名 为fooBar的属性,该属性就可以通过 project.xxx。除了这三个隐式的变量,你还可以引用系统属性,以及任何在MavenPOM中和构建profile中自定义的属性组。Java系统属性所有可以通过java.lang.SystemgetProperties()方法访问的属性都被暴露成POM属性。一些系统属性的例子是:hudson/home/hudson/usr/lib/jvm/java1.6.0openjdk1.6.0.0/jre,和Linux。一个完整的系统属性列表可以在java.lang.System类的Javadoc中找到。x我们还可以通过pom.xml或者settings.xml中的properties元素设置自己的属性,或者还可以使用外部载入的文件中属性。如果你在pom.xml中设置了一个名为fooBar的属性,该属性就可以通过{fooBar}引用。当你构建一个系统,它针
对不同的部署环境过滤资源,那么自定义属性就变得十分有用。这里是在POM中
设置${foo}=bar的语法:

bar

你可能感兴趣的:(maven,java,linux)