在Maven项目中,profile是根据不同的构件环境,对构建(build)过程进行动态配置的手段。
可以通过pom.xml定义多个profile,也可以通过settings.xml文件定义多个profile。对于一个profile,如果同时在pom.xml和settings.xml中配置,则settings.xml中的配置优先。
settings.xml中的profile只能配置如下元素:
- id
- activation
- repositories
- pluginRepositories
- properties
pom.xml中的profile能配置如下元素:
- id
- activation
- repositories
- pluginRepositories
- properties
- build
- modules
- dependencies
- dependencyManagement
- repositories
- pluginRepositories
- distributionManagement
- reporting
在每个profile中,都有一个<activation>给出当前profile被激活的环境条件,其中给出的任何一个条件满足即激活该profile。示例如下:
<profiles>
<profile>
<id>mytest</id>
<activation>
<activeByDefault>false</activeByDefault>
<jdk>1.5</jdk>
<os>
<name>Windows XP</name>
<family>Windows</family>
<arch>x86</arch>
<version>5.1.2600</version>
</os>
<property>
<name>sparrow-type</name>
<value>African</value>
</property>
<file>
<exists>${basedir}/file2.properties</exists>
<missing>${basedir}/file1.properties</missing>
</file>
</activation>
...
</profile>
</profiles>
</project>
说明:
- jdk,检查构建使用的JDK
- os,检查构建服务器的操作系统
- property,检查构建过程中是否存在名为${name}的属性及其值
- file,检查这里配置的文件是否存在(<exists>)或者不存在<missing>
一个profile是否被激活,还可以根据在settings.xml文件中的<activeProfile>中的id属性,或者根据JVM启动参数-P给出的激活条件,如mvn clean package -Pmytest。