一、在项目的父POM文件中配置profiles,
1. 其下一个profile就是一个环境配置,
2. resource中的directory指定配置文件所在的根目录,
3. excludes表示需要排除的配置文件匹配模式
4. properties定义环境属性值,在pom文件其他地方可以当作变量使用
<profiles>
<profile>
<!-- 原名:production -->
<id>scmbuild</id>
<build>
<resources>
<resource>
<directory>src/main/resources</directory>
<includes>
<include>**/*</include>
</includes>
<excludes>
<exclude>**/envDev/**</exclude>
<exclude>**/envDaily/**</exclude>
<exclude>**/envPrepublish/**</exclude>
<exclude>**/envPerf/**</exclude>
<exclude>**/envMock/**</exclude>
</excludes>
</resource>
</resources>
</build>
<properties>
<environment.type>production</environment.type>
<environment.dir>envProduction</environment.dir>
</properties>
</profile>
</profiles>
二、在web项目的POM文件中设置build所需的filter,对profile中可能的环境配置文件进行筛选,过滤出最终的配置文件
<build>
<finalName>gdsc</finalName>
<filters>
<filter>src/main/resources/conf/${environment.dir}/config-galax-${environment.type}.properties</filter>
</filters>
</build>
如上过滤出来的配置文件为 src/main/resources/conf/envProduction/config-galax-production.properties
在build package时通过-P传入当前的profile id,这样maven就会将${key}变量设置为对应的值,从而导致使用不同的filter文件来对resources下的文件进行过滤替换。