除了由POM,Maven Settings,环境变量,和Java系统属性提供的隐式变量,你还可以定义自己的专有属性。这类属性可以定义在POM或者Profile中。而这些在POM或者Maven Profile中设置的属性可以像任何其它Maven属性一样被引用。用户定义的属性可以在POM中引用,也可以由Maven Resource插件用来过滤资源。这里是一个例子,在Maven POM中定义了一些专有的属性。
Example 13.1. POM中的用户定义属性
<project>
...
<properties>
<arbitrary.property.a>This is some text</arbitrary.property.a>
<hibernate.version>3.3.0.ga</hibernate.version>
</properties>
...
<dependencies>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate</artifactId>
<version>${hibernate.version}</version>
</dependency>
</dependencies>
...
</project>上述例子定义了两个属性:arbitrary.property.a和hibernate.version。hibernate.version在依赖声明中被引用。在属性名中使用句号作为分隔符是Maven
POM和Profile中的一个标准实践。使用句号作为分隔符没有什么特殊的地方;对Maven来说,“hibernate.version”只是一个用来获取属性值“3.3.0.ga”的一个映射键。下一个例子展示了如何在Maven
POM中的一个profile中定义一个属性。
Example 13.2. POM的Profile中的用户定义属性
<project>
...
<profiles>
<profile>
<id>some-profile</id>
<properties>
<arbitrary.property>This is some text</arbitrary.property>
</properties>
</profile>
</profiles>
...
</project>前面的例子展示了在Maven POM的profile中定义一个用户自定义属性的过程。要了解更多的关于用户定义属性和profile的信息,请看Chapter 11, 构建Profile。

