13.2.5. 用户定义的属性

除了由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.ahibernate.versionhibernate.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