根据当前环境编译指定的配置文件
根据需要,可以将环境设置为以下几种:
dev
本地开发环境test
测试环境pro
线上环境
在resources目录下,建立三个文件夹,分别存储不同环境下的配置文件:
- dev
- test
- pro
- public 代表公共配置
定义三个配置,配置中定义了properties,通过更改属性(properties),更改当前环境:
<profiles>
<profile>
<id>dev</id>
<activation>
<!--默认环境-->
<activeByDefault>true</activeByDefault>
</activation>
<properties>
<package.environment>dev</package.environment>
</properties>
</profile>
<profile>
<id>test</id>
<properties>
<package.environment>test</package.environment>
</properties>
</profile>
<profile>
<id>online</id>
<properties>
<package.environment>pro</package.environment>
</properties>
</profile>
</profiles>
指定构建时的resources目录:
<resources>
<resource>
<directory>src/main/resources/${package.environment}</directory>
<filtering>true</filtering><!--是否进行过滤-->
</resource>
<resource><!--添加公共配置文件目录-->
<directory>src/main/resources/public</directory>
</resource>
</resources>
编译之后的效果:
![file](https://img-blog.csdnimg.cn/img_convert/4f036ed590d99f1528cc50c95a1978d8.png)
根据当前环境替换占位符
需要以来插件 maven-resources-plugin
,目前根据公司项目可以将环境大致分为开发环境、SIT环境 、UAT环境以及生产环境,定义如下profile:
<profiles>
<profile>
<id>dev</id>
<activation>
<activeByDefault>true</activeByDefault> <!--默认启用dev配置-->
</activation>
<properties>
<configEnv>dev</configEnv>
<jsfConfigEnv>dev</jsfConfigEnv>
</properties>
</profile>
<profile>
<id>sit</id>
<properties>
<configEnv>test</configEnv>
<jsfConfigEnv>sit</jsfConfigEnv>
</properties>
</profile>
<profile>
<id>uat</id>
<properties>
<configEnv>test</configEnv>
<jsfConfigEnv>uat</jsfConfigEnv>
</properties>
</profile>
<profile>
<id>pro</id>
<properties>
<configEnv>pro</configEnv>
<jsfConfigEnv>pro</jsfConfigEnv>
</properties>
</profile>
</profiles>
定义插件maven-resources-plugin
,指定占位符编码信息:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-resources-plugin</artifactId>
<version>2.5</version>
<configuration>
<useDefaultDelimiters>false</useDefaultDelimiters>
<delimiters>
<delimiter>${*}</delimiter> <!-- 占位符匹配 ${xxx}-->
</delimiters>
<encoding>UTF-8</encoding>
</configuration>
</plugin>
在<resources/>
标签下指定要替换占位符的资源:
<resource>
<filtering>true</filtering>
<directory>src/main/resources</directory>
<includes>
<include>jsf/jsf-consumer.xml</include>
</includes>
</resource>
指定占位符的properties文件:
<filters>
<filter>src/main/resources/config/jsf-config-${jsfConfigEnv}.properties</filter>
</filters>
文件定义如下:
![file](https://img-blog.csdnimg.cn/img_convert/642a661aef7689ec25b0c550031252e3.png)
![file](https://img-blog.csdnimg.cn/img_convert/f76ddfd4762b7ab97b876c1b857c9d13.png)
在配置文件中使用占位符:
![file](https://img-blog.csdnimg.cn/img_convert/2c27fb97d09692e93bf6c8951cdce618.png)
经过maven再次编译,可以看到,对应的占位符被替换为<filters>
定义的相应环境的properties文件的值了:
![file](https://img-blog.csdnimg.cn/img_convert/9f5b53ff90b7c81fd01b395af6d80025.png)