Maven实战(八)—— profile构建

一、Maven 的 profile 是什么?

profile:即maven项目的个性化配置,它可以让我们定义一系列的配置信息,然后指定其激活条件。这样我们就可以定义多个profile,然后每个profile对应不同的激活条件和配置信息,从而达到不同环境使用不同配置信息的效果。

配置形式,例如:

<profiles>

<profile>

<id>dev</id>

<activation>

<activeByDefault>true</activeByDefault>

 

</activation>

               </profile>

</profiles>

 解释:

<id>dev</id>表示profile的id,在使用mvn package -P profileId 命令时用来标示具体的profile;

<activation>节点配置profile生效的条件。

 

二、profile的定义位置?

对于使用Maven3,我们可以有多个地方定义profile,定义的地方不同,它的作用范围也不同。

(1)定义在pom.xml中:这是针对于特定项目的profile配置,定义在pom.xml中的profile可以定义更多的信息。主要有以下这些: <repositories>、 <pluginRepositories>、<dependencies>、<plugins>、 <properties>、<dependencyManagement>、<distributionManagement>,还有build元素下面的子元素,主要包括:<defaultGoal>、<resources>、<testResources>、<finalName>。

(2)定义在settings.xml中:这又分为某一用户目录下的“.m2”目录下settings.xml和Maven安装目录下的“conf/settings.xml”文件,如果是某一用户目录下的,则针对该用户的特定配置;如果是Maven安装目录下的,则针对所有用户所有项目的配置,具体而言,能够定义在settings.xml中的信息有<repositories>、<pluginRepositories>和<properties>。定义在<properties>里面的键值对可以在pom.xml中使用。

(3)定义在profiles.xml文件中:如果在一个pom.xml中定义的profile太多,会不好管理,可以将其分离出来,单独放到profiles.xml文件中。

 

三、 profile的激活方式?

1. 使用activeByDefault设置激活。

指定activeByDefault为true的时候就表示当没有指定其他profile为激活状态时,该profile就默认会被激活。

例如:

 <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>

 表示当我们调用mvn package的时候上面的profileTest1将会被激活。

 

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

即预先定义好多个profile,然后使用-P参数显式地指定激活某一个profile。

例如:

<profiles>

       <profile>

              <id>profileTest1</id>

              <properties>

                     <hello>world</hello>

              </properties>

       </profile>

       <profile>

              <id>profileTest2</id>

              <properties>

                     <hello>andy</hello>

              </properties>

       </profile>

<profiles>

 输入maven命令:mvn package -P profileTest1

就会激活profileTest1。

 

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

我们可以在settings.xml中使用activeProfiles来指定需要激活的profile,这种方式激活的profile将所有情况下都处于激活状态。

例如:

  <profiles>

         <profile>

              <id>profileTest1</id>

              <properties>

                     <hello>world</hello>

              </properties>

         </profile>

         

         <profile>

              <id>profileTest2</id>

              <properties>

                     <hello>andy</hello>

              </properties>

         </profile>

  </profiles>

这里的profile可以是定义在settings.xml中的,也可以是定义在pom.xml中的。这个时候如果我们需要指定profileTest1为激活状态,那么我们就可以在settings.xml中定义activeProfiles,具体定义如下:

  <activeProfiles>

       <activeProfile>profileTest1</activeProfile>

  </activeProfiles>

 

 4. 根据环境来激活profile。

profile一个非常重要的特性就是它可以根据不同的环境来激活,比如说根据操作系统的不同激活不同的profile,也可以根据jdk版本的不同激活不同的profile,等等。

例如:

4.1. 根据jdk来激活profile:

<profiles>

       <profile>

              <id>profileTest1</id>

              <jdk>1.5</jdk>

       </profile>

<profiles>

 

 4.2. 根据操作系统来激活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>

 

4.3. 根据系统属性来激活profile:

  <profiles>

         <profile>

              <id>profileTest1</id>

              <activation>

                <property>

                     <name>hello</name>

                     <value>world</value>

                </property>

              </activation>

         </profile>

  </profiles>

 

4.4. 根据文件是否存在激活profile:

  <profiles>

         <profile>

              <id>profileTest1</id>

              <activation>

                <file>

                     <exists>target</exists>

                </file>

              </activation>

         </profile>

  </profiles>

 相应的,也有根据文件不存在来激活profile:

  <profiles>

         <profile>

              <id>profileTest1</id>

              <activation>

                <file>

                     <missing>target</missing>

                </file>

              </activation>

         </profile>

  </profiles>

 

四、查看当前已经激活的profile。

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

你可能感兴趣的:(profile)