1. 程式人生 > >maven profile的不同啟用方法

maven profile的不同啟用方法

3)Profiles還可以基於detect到的build environment 的state來自動啟用,而不需要象上面2種方式顯式啟用。這隻需要在profile定義時使用<activation> element。如:
<profiles>
 <profile>
    <activation>
      <jdk>1.4</jdk>
    </activation>
    ...
 </profile>
</profiles>
上面的程式碼表示:如果JDK version start with 1.4 (eg. "1.4.0_08", "1.4.2_07", "1.4"),該profile會被啟用
 
<profiles>
 <profile>
    <activation>
      <property>
        <name>debug</name>
      </property>
    </activation>
    ...
 </profile>
</profiles>
上面的程式碼表示:如果存在system propertie “debug”,該profile會被啟用。為了啟用它,輸入的命令類似於:
mvn groupId:artifactId:goal –Ddebug
 
<profiles>
 <profile>
    <activation>
      <property>
        <name>environment</name>
        <value>test</value>
      </property>
    </activation>
    ...
 </profile>
</profiles>
上面的程式碼表示:如果存在system propertie “environment”的值為test,該profile會被啟用。為了啟用它,輸入的命令類似於:
mvn groupId:artifactId:goal -Denvironment=test


4)Profiles還可以基於OS setting來自動啟用
<profiles>
 <profile>
    <activation>
      <os>
      <name>Windows XP</name>
      <family>Windows</family>
      <arch>x86</arch>
      <version>5.1.2600</version>
    </os>
        </activation>
 ...
 </profile>
</profiles>
            上面的程式碼表示:如果OS為windows xp,該profile會被啟用
 
5)根據某個file不存在而啟用profile。例如下面定義的profile是在target/generated-sources/axistools/wsdl2java/org/apache/maven不存在時啟用
<profiles>
 <profile>
    <activation>
      <file>
        <missing>target/generated-sources/axistools/wsdl2java/org/apache/maven</missing>
      </file>
    </activation>
    ...
 </profile>
</profiles>
 
 
使用Profiles時要注意的2個問題
 
第一、external properties
 
不是定義在pom.xml裡的properties都稱為external properties。舉例說明最明瞭:
pom.xml:
<project>
 ...
 <build>
    <plugins>
      <plugin>
        <groupId>org.myco.plugins</groupId>
        <artifactId>spiffy-integrationTest-plugin</artifactId>
        <version>1.0</version>
        <configuration>
          <appserverHome>${appserver.home}</appserverHome>
        </configuration>
      </plugin>
      ...
    </plugins>
 </build>
 ...
</project>
 
~/.m2/settings.xml
<settings>
 ...
 <profiles>
    <profile>
      <id>appserverConfig</id>
      <properties>
        <appserver.home>/path/to/appserver</appserver.home>
      </properties>
    </profile>
 </profiles>
 
 <activeProfiles>
    <activeProfile>appserverConfig</activeProfile>
 </activeProfiles>
 ...
</settings>