文章目录
效果图
作用:动态修改配置文件,即在右边Profiles中勾选指定的环境,即可动态编译开发环境的配置文件
一、实现流程
1、新建一个maven项目,并创建一个 application.yml配置文件(啥也不配置,启动一下确保demo能运行)
2、 创建相应的配置文件
3、 配置 pom.xml 文件
<build>
<!-- 这个是编译工具,不用复制我的 -->
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
<!-- 开始:多环境配置 -->
<resources>
<!--不同环境下可以公用的配置文件 -->
<resource>
<!-- 指定配置文件路径(如果没有配置 `includes` 标签,默认是会加载 application.properties 和 application.yml 文件的) -->
<directory>src/main/resources</directory>
<!-- 指定加载什么文件,注意,如果没指定的文件,是不会被编译的(具体可看target文件夹) -->
<includes>
<include>application.yml</include>
</includes>
<!-- 开启过滤,没加的话@environment@ 这个读取不到 setting.xml 中配置的环境变量了 -->
<filtering>true</filtering>
</resource>
<resource>
<!-- 指定配置文件路径(这里指定的是我们需要加载的那个环境的配置文件,不加这段就不会加载指定环境的配置文件 ) -->
<directory>src/main/resources/${environment}</directory>
<includes>
<!-- 匹配所有文件 -->
<include>**/*.*</include>
</includes>
<filtering>false</filtering>
</resource>
</resources>
<!-- 测试文件的编译路径设置(单元测试不配置就读取不到(我也没测试过)配置文件了,下面的这些个路径和上面的相同,这段不配置也能用) -->
<testResources>
<testResource>
<directory>src/main/resources</directory>
<includes>
<include>application.yml</include>
</includes>
<filtering>true</filtering>
</testResource>
<testResource>
<directory>src/main/resources/${environment}</directory>
<includes>
<include>**/*.*</include>
</includes>
<filtering>false</filtering>
</testResource>
</testResources>
<!-- 结束:多环境配置 -->
</build>
4、 配置 maven 的 setting.xml 文件
<profiles>
<!-- 开始:多环境配置 -->
<!-- 本地环境 -->
<profile>
<id>test</id>
<properties>
<environment>test</environment>
</properties>
</profile>
<!-- 开发环境 -->
<profile>
<id>dev</id>
<properties>
<environment>dev</environment>
</properties>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
</profile>
<!-- 生产环境 -->
<profile>
<id>pre</id>
<properties>
<environment>pre</environment>
</properties>
</profile>
<!-- 结束:多环境配置 -->
</profiles>
5、重启idea,并查询是否配置成功
6、启动项目,测试是否成功(注意:如果切换失败,请删除 target 文件重新编译)
源码
源码地址(settings.xml文件放在配置文件目录中了):
https://gitee.com/lsnaaaa/env-isolation-demo