A.2.6. 激活(Activation)

Activation是profile的开启钥匙。如POM中的profile一样,profile的力量来自于它能够在某些特定的环境中自动使用某些特定的值;这些环境通过activation元素指定。

Example A.6. 在settings.xml中定义Activation参数

<settings xmlns="http://maven.apache.org/POM/4.0.0"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 
                      http://maven.apache.org/xsd/settings-1.0.0.xsd">
  ...
  <profiles>
    <profile>
      <id>test</id>
      <activation>
        <activeByDefault>false</activeByDefault>
        <jdk>1.5</jdk>
        <os>
          <name>Windows XP</name>
          <family>Windows</family>
          <arch>x86</arch>
          <version>5.1.2600</version>
        </os>
        <property>
          <name>mavenVersion</name>
          <value>2.0.3</value>
        </property>
        <file>
          <exists>/data/hudson-temporal-data/hudson-orchestrator-home/workspace/Book-To-Production/content-zh/file2.properties</exists>
          <missing>/data/hudson-temporal-data/hudson-orchestrator-home/workspace/Book-To-Production/content-zh/file1.properties</missing>
        </file>
      </activation>
      ...
    </profile>
  </profiles>
  ...
</settings>


当所有指定的条件符合的时候,profile机会被激活,虽然大部分情况我们不会需要所有的条件。

jdk

activation通过其jdk元素,提供了一个内置的,Java-核心的检查器。如果我们运行的一个jdk版本号,这里所配置的值能作为前缀与之匹配,激活就会发生。在上述的例子中,1.5.0_06就能够匹配。

os

os元素可以定义一些操作系统相关的属性,如上例。

property

如果Maven检测到某一个属性(其值可以在POM中通过${名称}引用),其拥有对应的名称和值,Profile就会被激活。

file

最后,通过提供一个文件名,通过检测该文件的存在或不存在来激活profile。

activation元素并不是激活profile的唯一方式。settings.xml文件中的activeProfile元素可以包含profile的id。profile也可以通过在命令行,使用-P标记和逗号分隔的列表来显式的激活(如,-P test)。

要了解在某个特定的构建中哪些profile会激活,可以使用maven-help-plugin。

mvn help:active-profiles