profile能为一个特殊的环境自定义一个特殊的构建,使得不同环境间构建的可移植性成为可能
profile可以覆盖几乎所有pom.xml中的配置,profiles元素通常是pom.xml的最后一个元素
每个profile必须有一个id,可以通过mvn ... -P<id> 来调用
自动激活profile使用<activation>元素
激活参数可以是activeByDefault,jdk,os,property,file,缺省属性!
外部profile将profiles.xml文件从pom.xml中分离出来更干净
区别于项目profile,setting profile定义在setting.xml中
对于setting profile可以在settings元素中定义激活列表<activeProfiles> <activeProfile>id</> </>
profile可以通过pom.xml,profiles.xml,/.m2/setting.xml,conf/setting.xml四个层次定义
相关的命令mvn help:active-profiles,mvn help:all-profiles
常见环境:
1./.m2/setting.xml中
<profile>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
<properties>
<environment.type>dev</environment.type>
</properties>
</profile>
2.pom.xml
<profile>
<id>development</id>
<activation>
<property>
<name>environment.type</name>
<value>dev</value>
</property>
</activation>
<properties>
<database.driverClassName>com.mysql.jdbc.Driver</database.driverClassName>
<database.url>
jdbc:mysql://localhost:3306/app_dev
</database.url>
<database.user>development_user</database.user>
<database.password>development_password</database.password>
</properties>
</profile>
<profile>
<id>production</id>
<activation>
<property>
<name>environment.type</name>
<value>prod</value>
</property>
</activation>
<properties>
<database.driverClassName>com.mysql.jdbc.Driver</database.driverClassName>
<database.url>jdbc:mysql://master01:3306,slave01:3306/app_prod</database.url>
<database.user>prod_user</database.user>
</properties>
</profile>
3.$ mvn install -Denvironment.type=prod