Maven profile

来自ling
跳转至: 导航搜索
  • 在pom.xml文件中通过<profile>的<activation>
  • 在settings.xml文件中通过<profile>的<activation>
  • 在settings.xml文件中通过<activeProfiles>

http://elim.iteye.com/blog/1900568

  • <repositories>
  • <pluginRepositories>
  • <dependencies>
  • <plugins>
  • <properties>
  • <dependencyManagement>
  • <distributionManagement>
  • 还有build元素下面的子元素,主要包括:
    • <defaultGoal>
    • <resources>
    • <testResources>
    • <finalName>

profile的激活方式

使用activeByDefault设置激活

<activation>  
  <activeByDefault>true</activeByDefault>  
</activation> 
 <profiles>  
        <profile>  
             <id>profileTest1</id>  
             <properties>  
                    <hello>world</hello>  
             </properties>  
             <activation>  
                    <activeByDefault>true</activeByDefault>  
             </activation>  
        </profile>  
          
        <profile>  
             <id>profileTest2</id>  
             <properties>  
                    <hello>andy</hello>  
             </properties>  
        </profile>  
 </profiles>

使用activeByDefault设置激活 当没有指定条件,然后指定activeByDefault为true的时候就表示当没有指定其他profile为激活状态时,该profile就默认会被激活

但是当我们使用mvn package –P profileTest2的时候将激活profileTest2,而这个时候profileTest1将不会被激活

在settings.xml中使用activeProfiles指定处于激活状态的profile

同时激活profileTest1和profileTest2

<activeProfiles>  
     <activeProfile>profileTest1</activeProfile>  
     <activeProfile>profileTest2</activeProfile>  
</activeProfiles>

使用-P参数显示的激活一个profile

mvn package –P profileTest1  

针对activeByDefault

Mvn package –P !profileTest1  

根据环境来激活profile

  • 在jdk为1.5版本系列的时候激活profileTest1
<profiles>  
      <profile>  
             <id>profileTest1</id>  
             <jdk>1.5</jdk>  
      </profile>  
<profiles>  
  • 在jdk为1.4、1.5和1.6的时候激活profileTest1
<profiles>  
      <profile>  
             <id>profileTest1</id>  
             <jdk>[1.4,1.7)</jdk>  
      </profile>  
<profiles>

根据操作系统来激活profile

<profiles>  
      <profile>  
           <id>profileTest1</id>  
           <activation>  
             <os>  
                  <name>Windows XP</name>  
                  <family>Windows</family>  
                  <arch>x86</arch>  
                  <version>5.1.2600</version>  
             </os>  
           </activation>  
      </profile>  
</profiles>  

根据系统属性来激活profile

profileTest1将在提供了系统属性hello,并且其值为world的时候激活

<profiles>  
      <profile>  
           <id>profileTest1</id>  
           <activation>  
             <property>  
                  <name>hello</name>  
                  <value>world</value>  
             </property>  
           </activation>  
      </profile>  
</profiles>  
mvn package –Dhello=world

当是下面的这种定义形式时,profileTest1将在指定了系统属性hello,且其值为任意值的时候被激活

<profiles>  
      <profile>  
           <id>profileTest1</id>  
           <activation>  
             <property>  
                  <name>hello</name>  
             </property>  
           </activation>  
      </profile>  
</profiles>  

根据文件是否存在激活profile

当存在target文件时激活profileTest1

<profiles>  
      <profile>  
           <id>profileTest1</id>  
           <activation>  
             <file>  
                  <exists>target</exists>  
             </file>  
           </activation>  
      </profile>  
</profiles>

当不存在target文件时激活profileTest1

<profiles>  
      <profile>  
           <id>profileTest1</id>  
           <activation>  
             <file>  
                  <missing>target</missing>  
             </file>  
           </activation>  
      </profile>  
</profiles>

查看当前处于激活状态的profile

我们可以同时定义多个profile,那么在建立项目的过程中,到底激活的是哪一个profile呢?Maven为我们提供了一个指令可以查看当前处于激活状态的profile都有哪些,这个指定就是mvn help:active-profiles。 现在假设我们的settings.xml文件中有如下profile的定义:

<profiles>  
      <profile>  
           <id>profileTest1</id>  
           <activation>  
             <file>  
                  <missing>target</missing>  
             </file>  
           </activation>  
      </profile>  
</profiles>  
 
<activeProfiles>  
    <activeProfile>profileTest1</activeProfile>  
</activeProfiles>  

这个时候我们可以看到,我们已经定义了profileTest1始终为激活状态,这个时候我们使用mvn help:active-profiles查看处于激活状态的profile时,就会打印出如下内容: