Maven的多profile设置

每个Profile可以看作是POM的一部分配置,我们可以根据不同的环境应用不同的Profile,从而达到不同环境使用不同的POM配置的目的。

profile可以声明在以下这三个文件中:

  • pom.xml:很显然,这里声明的profile只对当前项目有效

  • 用户settings.xml:.m2/settings.xml中的profile对该用户的Maven项目有效

  • 全局settings.xml:conf/settings.xml,对本机上所有Maven项目有效

非常值得注意的一点是,profile在pom.xml中可声明的元素在settings.xml中可声明的元素是不一样的:

profile在pom.xml中可声明的元素:

[html] view plaincopy

    1. <project>  

    2.     <repositories></repositories>  

    3.     <pluginRepositories></pluginRepositories>  

    4.     <distributionManagement></distributionManagement>  

    5.     <dependencies></dependencies>  

    6.     <dependencyManagement></dependencyManagement>  

    7.     <modules></modules>  

    8.     <properties></properties>  

    9.     <reporting></reporting>  

    10.     <build>  

    11.         <plugins></plugins>  

    12.         <defaultGoal></defaultGoal>  

    13.         <resources></resources>  

    14.         <testResources></testResources>  

    15.         <finalName></finalName>  

    16.     </build>  

    17. </project>  

  • profile在settings.xml中可声明的元素:

    [html] view plaincopy

    1. <project>  

    2.     <repositories></repositories>  

    3.     <pluginRepositories></pluginRepositories>  

    4.     <properties></properties>  

    5. </project>  

激活Profile

有多种激活Profile的方式:

  1. 命令行方式激活,如有两个profile id为devx和devy的profile:

    [plain] view plaincopy

    1. mvn clean install  -Pdevx,devy  

  2. settings文件显式激活

    [html] view plaincopy

    1. <settings>  

    2.     ...  

    3.     <activeProfiles>  

    4.         <activeProfile>devx</activeProfile>  

    5.         <activeProfile>devy</activeProfile>  

    6.     </activeProfiles>  

    7.     ...  

    8. </settings>  

  3. 系统属性激活,用户可以配置当某系统属性存在或其值等于期望值时激活profile,如:

    [html] view plaincopy

    1. <profiles>  

    2.     <profile>  

    3.         <activation>  

    4.             <property>  

    5.                 <name>actProp</name>  

    6.                 <value>x</value>  

    7.             </property>  

    8.         </activation>  

    9.     </profile>  

    10. </profiles>  

不要忘了,可以在命令行声明系统属性。如:

[plain] view plaincopy

mvn clean install -DactProp=x  

  1. 这其实也是一种从命令行激活profile的方法,而且多个profile完全可以使用同一个系统属性来激活。别忘了,系统属性可以通过mvn help:system来查看

    4.操作系统环境激活,如

  2. [html] view plaincopy

    1. <profiles>  

    2.     <profile>  

    3.         <activation>  

    4.             <os>  

    5.                 <name>Windows XP</name>  

    6.                 <family>Windows</family>  

    7.                 <arch>x86</arch>  

    8.                 <version>5.1.2600</version>  

    9.             </os>  

    10.         </activation>  

    11.     </profile>  

    12. </profiles>  

    这里的family值包括Window、UNIX和Mac等,而其他几项对应系统属性的os.name、os.arch、os.version

    5.文件存在与否激活,Maven能根据项目中某个文件存在与否来决定是否激活profile

  3. [html] view plaincopy

    1. <profiles>  

    2.     <profile>  

    3.         <activation>  

    4.             <file>  

    5.                 <missing>x.properties</missing>  

    6.                 <exists>y.properties</exists>  

    7.             </file>  

    8.         </activation>  

    9.     </profile>  

    10. </profiles>  

Notice:插件maven-help-plugin提供了一个目标帮助用户了解当前激活的profile:

[plain] view plaincopy

  1. mvn help:active-profiles  

另外还有一个目标来列出当前所有的profile:

[plain] view plaincopy

  1. mvn help:all-profiles  

maven profile 与filter集合

  <properties> 

  <env>dev</env> 

  </properties> 

  <profiles> 

  <profile> 

    <id>dev</id> 

    <properties> 

      <env>dev</env> 

    </properties> 

  </profile> 

  <profile> 

    <id>test</id> 

    <properties> 

      <env>test</env> 

    </properties> 

  </profile> 

  <profile> 

    <id>product</id> 

    <properties> 

      <env>product</env> 

    </properties> 

  </profile> 

</profiles> 

<filters> 

    <filter>src/main/filters/filter-${env}.properties</filter><!-- 使用filter引入自定义maven属性,不同的profile 引入不同的文件 -->

</filters>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值