我们平时开发中,基本都会有开发环境、测试环境、生产环境,需要切换不同的配置文件;如果每次都手动修改配置文件就太麻烦了;
所有我们可以使用maven配置多环境,配置完成效果:
配置步骤:
1、在项目的resources目录下创建config文件夹,添加不同环境的配置文件,如下图:
2、在pom.xml的添加配置
2.1、在pom.xml的project标签添加以下标签
<profiles>
<profile>
<!--内网测试环境-->
<id>dev</id>
<properties>
<!-- dev是自定义属性,不同的值对应不同的环境 -->
<environment>dev</environment>
</properties>
</profile>
<profile>
<!--本地测试环境-->
<id>local</id>
<properties>
<!-- environment是自定义标签,需要和application.yml文件的字段profiles.active的值一致-->
<environment>local</environment>
</properties>
<activation>
<!-- 默认激活local环境的配置 -->
<activeByDefault>true</activeByDefault>
</activation>
</profile>
<profile>
<!--正式环境内网ip-->
<id>prod</id>
<properties>
<environment>prod</environment>
</properties>
</profile>
</profiles>
</project>
2.2、在pom.xml的build标签下添加以下代码,指定配置文件的路径
- 注意:config/application-${environment}.yml多配置文件的路径,如果项目的路径不是这个,这里也要修改,不然会读取不到配置文件
<!--多配置文件-->
<resources>
<resource>
<directory>src/main/resources</directory>
<excludes>
<exclude>**/*.yml</exclude>
</excludes>
</resource>
<resource>
<directory>src/main/java</directory>
<includes>
<include>**/*.xml</include>
</includes>
<filtering>false</filtering>
</resource>
<resource>
<directory>src/main/resources</directory>
<filtering>true</filtering>
<includes>
<include>application.yml</include>
<include>config/application-${environment}.yml</include>
<include>**/*.xml</include>
</includes>
</resource>
</resources>
</build>
3、修改application.yml或者application.properties的配置文件,指定环境的标签
profiles:
active: @environment@
4、检查配置有没有生效,编译成功后,可以直接Ctrl+左键点击是可以跳转的对应的环境,如下图:
特殊情况:
1、有时会切换环境之后,不生效的情况,主要原因是上一个配置换编译target文件夹没有清除;
解决方法:先clean清除编译文件,再刷新一下maven的配置
2、环境不要选择多个,如下图情况,
只会取最下面的prod配置,dev配置是不生效的