在实际开发过程中,我们经常需要面对开发环境、测试环境与生产环境进行yml配置文件的切换,使用注释切换与手工替换的方式效率较低;且不同环境下的配置需求也经常不一样,这样会造成少改、漏改和错改的问题。为解决这个问题,我们可以借助maven的profile进行多环境的配置文件切换,本文将介绍基于maven的springboot多环境yml配置文件切换的配置步骤。
注:开发环境-dev,测试环境-test,生产环境-release
一、增加多个配置文件
1.1 创建环境所对应的配置文件
将原配置文件 application.yml 修改为 application-dev.yml并复制出一份 application-release.yml,如下图所示
其中,将dev的配置文件修改为开发环境所对应的配置,release配置文件修改为生产环境所对应配置,若需要增加测试环境-test则自行添加多一份yml。
1.2 修改applicaion.yml
将原来application.yml的文件内容删除,并修改为以下配置
spring:
profiles:
active: @[email protected]
二、修改maven profiles
2.1 <build>添加resource
进入项目的pom.xml,在<build>标签下添加以下配置
<resources>
<resource>
<directory>src/main/resources</directory>
<!-- 处理文件时替换文件中的变量 -->
<filtering>true</filtering>
<excludes>
<!-- 打包时排除文件,可自行添加test.yml -->
<exclude>application.yml</exclude>
<exclude>application-dev.yml</exclude>
<exclude>application-prod.yml</exclude>
</excludes>
</resource>
<resource>
<directory>src/main/resources</directory>
<filtering>true</filtering>
<!-- 打包时所包含得文件 -->
<includes>
<include>application.yml</include>
<include>application-${profileActive}.yml</include>
</includes>
</resource>
</resources>
2.2 在<project>标签下添加profiles配置
继续编辑pom.xml,在<project>标签下添加以下配置
<profiles>
<!-- dev开发环境配置,release为生产环境配置 -->
<profile>
<id>dev</id>
<properties>
<profileActive>dev</profileActive>
</properties>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
</profile>
<profile>
<id>release</id>
<properties>
<profileActive>release</profileActive>
</properties>
</profile>
</profiles>
完成以上两步,便完成了springboot下的多环境配置。
三、环境配置切换与打包
3.1 环境配置切换
进入IDEA,点击最右边的maven管理选项卡
此时可以看到项目maven多了Profiles,Profiles下含有dev与release选框,这便是2.2中我们所配置的profiles。我们点击dev或release,IDEA便会自动替换当前所**的配置文件,完成配置文件的替换,如上图所示,我们点击dev,并在本地运行springboot,我们可以看到springboot会依照当前dev配置运行项目,至此我们完成了环境配置切换的步骤。
3.2 项目打包
进入maven project选项,选择需要打包的环境(如release),点击my-project/Liftcycle ->package
如下图所示便打包成功,我们进入红线所示的地址,检查jar包配置文件是否有问题。
jar包总体目录结构:
jar包内配置文件详情
至此,我们完成了基于maven的springboot多环境yml配置文件切换与隔离。