1、前言
项目开发过程中可能会用到多个application配置文件,如开发环境、测试环境、生产环境等。
接手的这个项目是通过在application.yml配置文件中写死,每次打包前通过修改代码里的spring.profiles.active属性值来控制使用不同的配置文件。如下图:
问题就来了,那如何用jenkins打包呢?同事给的回答:
2、解决思路
在pom.xml文件中设置多个配置文件的变量,在idea中可以在maven下的profiles中选择生效的配置文件,yml文件中根据变量名称来获取对应的配置文件。
注意:每次修改后需要更新maven,不生效可使用clean、install。
3、操作步骤及配置文件源代码
1)新增不同环境的配置文件,命名方式为:application-变量名.yml。
2)pom.xml文件中新增多个环境变量,变量名设置为【package.environment】。变量值对应新建的配置文件的变量名。
<profiles>
<profile>
<id>dev</id>
<properties>
<package.environment>dev</package.environment>
</properties>
<!-- 是否默认 true表示默认 -->
<activation>
<activeByDefault>true</activeByDefault>
</activation>
</profile>
<profile>
<id>pro</id>
<properties>
<package.environment>pro</package.environment>
</properties>
</profile>
<profile>
<id>uat</id>
<properties>
<package.environment>uat</package.environment>
</properties>
</profile>
</profiles>
3)pom.xml文件中设置filtering为true时替换资源文件中的占位符
<build>
<resources>
<resource>
<directory>src/main/resources</directory>
<filtering>true</filtering>
</resource>
</resources>
</build>
4)application.yml文件中将原写死的配置文件名用环境变量名替换。
spring:
profiles:
active: '@package.environment@'