由于开发、测试、运维发布等岗位要求,对项目各类环境配置打包会有不一样的要求,比如:
- dev(开发环境,开发人员使用)
- test(测试环境,测试人员使用)
- preview(运维,发布预览使用)
- prod(运维,正式发布使用)
那么,我们构建项目过程中,就需要把各类环境配置起来,方便打包导出发布项目
首先,为了实现区分不同环境的配置,先把目录进行划分
-
env-dev、env-test、env-preview、env-prod,4个目录对应不同的环境配置 resources/*代表共用的配置
其次,在starter中的pom.xml中修改maven配置,其他修改
<build>
<resources>
<!-- 资源资源配置-->
<resource>
<directory>src/main/resources/</directory>
<!--打包时,先排除环境配置文件夹-->
<excludes>
<exclude>env-dev/*</exclude>
<exclude>env-test/*</exclude>
<exclude>env-preview/*</exclude>
<exclude>env-prod/*</exclude>
</excludes>
<includes>
<!--如果有其他定义通用文件,需要包含进来-->
<!--<include>messages/*</include>-->
</includes>
</resource>
<!--资源包含配置-->
<resource>
<directory>src/main/resources/${profiles.active}</directory>
</resource>
</resources>
</build>
<!-- 定义环境变量 -->
<profiles>
<profile>
<id>dev</id>
<properties>
<profiles.active>env-dev</profiles.active>
</properties>
<activation>
<!--这个字段表示默认激活-->
<activeByDefault>true</activeByDefault>
</activation>
</profile>
<profile>
<id>test</id>
<properties>
<profiles.active>env-test</profiles.active>
</properties>
</profile>
<profile>
<id>preview</id>
<properties>
<profiles.active>env-preview</profiles.active>
</properties>
</profile>
<profile>
<id>prod</id>
<properties>
<profiles.active>env-prod</profiles.active>
</properties>
</profile>
</profiles>
启动时,填使用环境,这里我用test环境
maven的profies勾选test,然后清空重编译,再启动springboot
检查编译后,资源是否正确
最后,成功使用test配置,启动SpringBoot
总结、划分目录的扩展构想
本示例主要使用不同环境文件夹区分配置,目的在于把环境资源都进行一个目录划分,更好地维护管理配置,方便打包及验证。其它比如日志配置、短信服务配置、邮件配置等都可以各自放到4类环境目录。