文档说明: Maven构建配置文件
01. 背景
在开发过程中,我们的项目会存在不同的运行环境(开发、测试、生产),而不同环境中项目的某些配置(数据源等)是不一样的,如果我们将软件部署到不同环境都需要修改相应的配置文件,这样来回修改,很容易出错,而且浪费劳动力。为此Maven提供了一种灵活的解决方案:就是profile功能。
02. 激活方式
1. 通过maven命令参数
即在使用maven打包时通过-P参数,-P后跟上profile的唯一id,如
mvn package -Ptest
2. 通过pom文件里的activation属性
<profile>
<id>prod</id>
<properties>
<profiles.active>prod</profiles.active>
</properties>
<!-- activation用来指定激活方式,可以根据jdk环境,操作系统,环境变量,文件的存在或缺失 -->
<activation>
<!--配置默认激活-->
<activeByDefault>true</activeByDefault>
<!--通过jdk版本-->
<!--当jdk环境版本为1.5时,此profile被激活-->
<jdk>1.5</jdk>
<!--当jdk环境版本1.5或以上时,此profile被激活-->
<jdk>[1.5,)</jdk>
<!--根据当前操作系统-->
<os>
<name>Windows XP</name>
<family>Windows</family>
<arch>x86</arch>
<version>5.1.2600</version>
</os>
<!--通过系统环境变量,name-value自定义-->
<property>
<name>env</name>
<value>test</value>
</property>
<!--通过文件的存在或缺失-->
<file>
<missing>target/generated-sources/axistools/wsdl2java/com/companyname/group</missing>
<exists/>
</file>
</activation>
</profile>
这里我写了多种方式,可以通过activeByDefault、jdk版本、操作系统、系统环境变量(在win10我试了不成功,win7可以,不知道为啥)、文件的存在或缺失,实际项目可以根据需要选取一种即可。这种的优先级低于maven命令参数指定的方式。
3. settings.xml中使用activeProfiles指定(了解即可)
即mave目录下的settings.xml也可以添加下面的代码来指定激活哪个profile。
<activeProfiles>
<activeProfile>test</activeProfile>
</activeProfiles>
1. 修改{USER_HOME}/.m2/settings.xml,针对的当前用户的profile配置;修改{MAVEN_HOME}/conf/settings.xml,针对的是全局的profile配置。
2. profile也可以定义在setting.xml文件中,但是这种方式个人感觉并不实用的,不推荐。