Maven根据Profile读取不同配置环境配置文件

原文出处:https://blog.csdn.net/uestc_lxp/article/details/46858399

一、定义Profile

  • pom.xml 中的profiles 元素,它包含了一个或者多个profile 元素。由于profile 覆盖了pom.xml 中的
    默认设置,profiles 通常是pom.xml 中的最后一个元素。
  • 每个 profile 必须要有一个id 元素。这个id 元素包含的名字将在命令行调用profile 时被用到。我们可以
    通过传给Maven 一个-P<profile_id>参数来调用profile。
  • 一个 profile 元素可以包含很多其它元素,只要这些元素可以出现在POM XML 文档的project 元素下
    面。

Maven profile 可以覆盖几乎所有pom.xml 中的配置。Maven POM 包含一个名为profiles 的元素,它包含了项
目的替代配置,在这个元素下面,每个profile 元素定义了一个单独的profile。每个profile 必须要有一个id,除此之外,它可以包含几乎所有你能在project 下看到的元素。

一个Profile 可以覆盖项目构件的最终名称,项目依赖,插件配置以影响构建行为。Profile 还可以覆盖分发配置;例如,如果你通过一个staging profile 发布一个构件到staging 服务器上,你就可以创建一个profile 然后在里面定义distributionManagement 元素。

Xml代码  

  1. <project>  
  2.     <profiles>  
  3.         <profile>  
  4.             <build>  
  5.                 <defaultGoal>...</defaultGoal>  
  6.                 <finalName>...</finalName>  
  7.                 <resources>...</resources>  
  8.                 <testResources>...</testResources>  
  9.                 <plugins>...</plugins>  
  10.             </build>  
  11.             <reporting>...</reporting>  
  12.             <modules>...</modules>  
  13.             <dependencies>...</dependencies>  
  14.             <dependencyManagement>...</dependencyManagement>  
  15.             <distributionManagement>...</distributionManagement>  
  16.             <repositories>...</repositories>  
  17.             <pluginRepositories>...</pluginRepositories>  
  18.             <properties>...</properties>  
  19.         </profile>  
  20.     </profiles>  
  21. </project>  

二、激活Profile

Maven 提供了一种针对不同环境参数“激活”一个profile 的方式,这就叫做profile 激活。激活配置元素下可以包含一个或者多个选择器:包含JDK 版本,操作系统参数,文件,以及属性。当所有标准都被满足的时候一个profile 才会被激活。例如,一个profile可以要求操作系统家族为Windoes,JDK 版本为1.4,那么该profile 只有当构建在Windows 机器上的Java 1.4 上运行的时候才会被激活。如果该profile 被激活,那么它定义的所有配置都会覆盖原来POM 中对应层次的元素,就像使用命令行参数-P 引入该profile 一样。 

例如:

Xml代码  

  1. <project>  
  2.     ...  
  3.     <profiles>  
  4.         <profile>  
  5.             <id>dev</id>  
  6.             <activation>  
  7.                 <activeByDefault>false</activeByDefault>  
  8.                 <jdk>1.5</jdk>  
  9.                 <os>  
  10.                     <name>Windows XP</name>  
  11.                     <family>Windows</family>  
  12.                     <arch>x86</arch>  
  13.                     <version>5.1.2600</version>  
  14.                 </os>  
  15.                 <property>  
  16.                     <name>mavenVersion</name>  
  17.                     <value>2.0.5</value>  
  18.                 </property>  
  19.                 <file>  
  20.                     <exists>file2.properties</exists>  
  21.                     <missing>file1.properties</missing>  
  22.                 </file>  
  23.             </activation>  
  24.             ...  
  25.         </profile>  
  26.     </profiles>  
  27. </project>  

你可以基于一个属性如environment.type 的值来激活一个profile。当environment.type 等于dev 的时候激活development profile,或者当environment.type 等于prod 的时候激活production profile。你也可以通过一个属
性的缺失来激活一个profile。下面的配置中,只有在Maven 运行过程中属性environment.type 不存在profile 才被激活。  例如:

Xml代码  

  1. <project>  
  2.     ...  
  3.     <profiles>  
  4.         <profile>  
  5.             <id>development</id>  
  6.             <activation>  
  7.                 <property>  
  8.                     <name>!environment.type</name>  
  9.                 </property>  
  10.             </activation>  
  11.         </profile>  
  12.     </profiles>  
  13. </project>  

三、外部Profiles文件

要定义名部的Profiles文件,只需要在${baseDir}下定义一个profiles.xml文件即可,文件的内容结构大约是:

Xml代码  

  1. <profiles>  
  2.     <profile>  
  3.         <id>development</id>  
  4.         <build>  
  5.             <plugins>  
  6.                 <plugin>  
  7.                     <groupId>org.apache.maven.plugins</groupId>  
  8.                     <artifactId>maven-compiler-plugin</artifactId>  
  9.                     <configuration>  
  10.                     <debug>true</debug>  
  11.                     <optimize>false</optimize>  
  12.                     </configuration>  
  13.                 </plugin>  
  14.             </plugins>  
  15.         </build>  
  16.     </profile>  
  17.     <profile>  
  18.         <id>production</id>  
  19.         <build>  
  20.             <plugins>  
  21.                 <plugin>  
  22.                     <groupId>org.apache.maven.plugins</groupId>  
  23.                     <artifactId>maven-compiler-plugin</artifactId>  
  24.                     <configuration>  
  25.                     <debug>false</debug>  
  26.                     <optimize>true</optimize>  
  27.                     </configuration>  
  28.                 </plugin>  
  29.             </plugins>  
  30.         </build>  
  31.     </profile>  
  32. </profiles>  

三、用户特定的Profile和全局的Profile

要定义用户特定的Profile,只需要配置系统用户目录下的~/.m2/settings.xml;要配置全局Profile,需要配置Maven_Home/conf/settings.xml。

四、列出活动的Profile

用户可以在以下四个地方配置Profile

  1. pom.xml
  2. profiles.xml
  3. ~/.m2/settings.xml
  4. Maven_Home/conf/settings.xml

可以通过命令: 

C代码  

  1. $ mvn help:active-profiles  

得到所有活动的profile

猜你喜欢

转载自blog.csdn.net/qq_38793958/article/details/81709208