Maven profile的几种激活方式
转自:http://juvenshun.iteye.com/blog/208714
?
首先简单介绍下Maven的profile是什么。对于人来说,profile是指人的肖像,轮廓,比如论坛里
每个人注册了帐号后,可以设置自己的profile,放上照片,介绍等等。对于 Maven 来说又是怎样
呢?整个项目定义好了项目对象模型(POM),就像论坛为每个人提供了默认的行为功能,如果我想改
变我机器上的POM呢?这时就可以使用profile。下面举个例子:
<profiles>?
????? <profile>?
??????? <id>jdk16</id>?
??????? <activation>?
????????? <jdk>1.6</jdk>?
??????? </activation>?
??????? <modules>?
????????? <module>simple-script</module>?
??????? </modules>?
????? </profile>?
</profiles>
这个profile的意思是,当机器上的JDK为1.6的时候,构建imple-script这个子模块,如果是1.5
或者1.4,那就不构建,这个profile是由环境自动激活的。
我们需要在合适的地方使用合适的profile ,并且在合适的时候用合适的方式将其激活,你不能在构
建服务器上激活非公共的profile,你也不能要求开发人员写很复杂的命令来使用常规的profile。
因此这里介绍一下几种 profile 的激活方式。
1. 根据环境自动激活
?? 如前一个例子,当JDK为1.6的时候,Maven就会自动构建simple-script 模块。除了 JDK 之外,
?? 我们还可以根据操作系统参数和Maven属性等来自动激活profile,如:
?? <profile>?
????? <id>dev</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>mavenVersion</name>?
????????? <value>2.0.5</value>?
??????? </property>?
??????? <file>?
????????? <exists>file2.properties</exists>?
????????? <missing>file1.properties</missing>?
??????? </file>?
????? </activation>?
????? ...?
?? </profile>
2. 通过命令行参数激活
?? 这是最直接和最简单的方式,比如你定义了一个名为myProfile的profile,你只需要在命令行输入:
?? mvn clean install -Pmyprofile就能将其激活,这种方式的好处很明显,但是有一个很大的弊端,
?? 当profile比较多的时候,在命令行输入这写-P 参数会让人觉得厌烦,所以,如果你一直用这种方式,
?? 觉得厌烦了,可以考虑使用其它自动激活的方式。
3. 配置默认自动激活
?? 方法很简单,在配置profile的时候加上一条属性就可以了,如:
?? <profile>?
????? <id>dev</id>?
????? <activation>?
??????? <activeByDefault>true</activeByDefault>?
????? </activation>?
????? ...?
?? </profile>
?? 在一个特殊的环境下,配置默认自动激活的profile覆盖默认的POM配置,非常简单有效。
4. 配置settings.xml文件profile激活
?? settings.xml 文件可以在 ~/.m2 目录下,为某个用户的自定义行为服务,也可以在M2_HOME/conf
?? 目录下,为整台机器的所有用户服务。而前者的配置会覆盖后者。同理,由settings.xml激活的profile
?? 意在为用户或者整个机器提供特定环境配置,比如,你可以在某台机器上配置一个指向本地数据库URL的
?? profile,然后使用该机器的settings.xml 激活它。激活方式如下:
?? <settings>?
????? ...?
????? <activeProfiles>?
??????? <activeProfile>local_db</activeProfile>?
????? </activeProfiles>?
?? </settings>
?? Maven提供的profile功能非常强大和灵活,用得好的话,可以有效的隔离很多特殊的配置,使得整个项目
?? 能在不同环境中顺利的构建。但是,强大和灵活带来得问题是相对难掌握,希望本文能对 Maven 使用者有
?? 帮助。