profile允许为特殊的移植或者目的,自定义构建,一般位于pom.xml或者settings.xml中(maven3中已经不再支持profiles.xml这种外部profile)。
profile标签几乎可以覆盖所有的元素,在设置好profile之后,我们需要将其激活。激活的方式有以下几种:
一是命令行激活:mvn install -Pprofile -id; 二是在profile中设置<activation/><activeByDefault/>(如果默认为true则自动激活,如果默认false则根据其它条件是否符合来判断是否激活);
三是在settings.xml中根据<activeProfiles/><activeProfile/>profile-id中进行统一激活(要求这个profile-id必须是在settings.xml中所定义)。
下面根据实际的场景来对profile的应用做进一步的说明。
场景一:开发环境与生产环境的数据库连接设置不同,如何用profile实现?
settings.xml与pom.xml配合实现,设置如下:
<profiles> <profile> <id>environment</id> <activation> <activeByDefault>true</activeByDefault> </activation> <properties> <environment.type>pro</environment.type> <property1>2</property1> </properties> </profile> ...
<profiles> <profile> <id>devlopment</id> <activation> <property> <name>environment.type</name> <value>dev</value> </property> </activation> <properties> <jdbc.driverClassName>oracle.Driver</jdbc.driverClassName> <jdbc.url>oracle.URL</jdbc.url> <jdbc.name>oracle</jdbc.name> <jdbc.password>oracle</jdbc.password> </properties> </profile> <profile> <id>production</id> <activation> <property> <name>environment.type</name> <value>pro</value> </property> </activation> <properties> <jdbc.driverClassName>mysql.Driver</jdbc.driverClassName> <jdbc.url>mysql.URL</jdbc.url> <jdbc.name>mysql</jdbc.name> <jdbc.password>mysql</jdbc.password> </properties> </profile> </profiles> <build> <resources> <resource> <directory>src/main/resources</directory> <filtering>true</filtering> </resource> </resources> </build>
这样可以很容易地转换环境变量的配置,要注意的是build一定要加,这是利用了Maven的Resource Filter功能,从而找到<directory/>下的文件,替代${}占位符的内容。如果此时需要修改dev或者pro,最方便的办法就是直接用命令行覆盖environment.type的值,虽然settings.xml默认的值是pro但如果用:mvn install -Denvironment.type=dev来编译打包,那么最终的值即为dev这一套。
待续。。。
时间: 2024-10-06 05:31:16