maven+spring boot 多环境多配置切换
maven多环境配置文件,生产环境,开发环境,测试环境的配置文件resource目录如图: 需要动态切换的是application.yml和properties文件
pom.xml的配置如下
<!-- 开启读取多环境配置 -->
<build>
<resources>
<resource><!--此处的设置是打包的时候排除不相关的目录-->
<directory>src/main/resources/config</directory>
<!--此处设置为上面在resources目录下创建的文件夹-->
<excludes>
<exclude>dev/*</exclude>
<exclude>test/*</exclude>
<exclude>prod/*</exclude>
</excludes>
<!--开启过滤器,此处不能忽略!-->
<filtering>true</filtering>
</resource>
<!--此处的设置是为了将放置于resources文件夹下mybatis的mapper文件正常打包进去,和一些不需要多环境的配置文件-->
<resource>
<!--如果将mybatis的mapper文件放在dao接口的同目录下,应该将此处设置为src/main/java-->
<directory>src/main/resources</directory>
<includes>
<include>**/*.xml</include>
<include>aa.jks</include>
<include>logback.xml</include>
<include>public.txt</include>
<include>aa.json</include>
<include>static/**</include>
</includes>
<!--此处不需要过滤器过滤-->
<filtering>false</filtering>
</resource>
<!--此处设置是配置相应配置文件夹的路径(profiles.active是自己定义的,和下边的profile对应即可)-->
<resource>
<directory>src/main/resources/config/${profiles.active}</directory>
</resource>
</resources>
</build>
<profiles>
<profile>
<id>dev</id>
<properties>
<profiles.active>dev</profiles.active>
</properties>
<!-- 默认使用的环境配置 -->
<activation>
<activeByDefault>true</activeByDefault>
</activation>
</profile>
<profile>
<id>test</id>
<properties>
<profiles.active>test</profiles.active>
</properties>
</profile>
<profile>
<id>prod</id>
<properties>
<profiles.active>prod</profiles.active>
</properties>
</profile>
</profiles>
打包的时候:
自己的命令,后边加 - P dev 这个命令即可
P是大写,后边的dev代表自己要打包的环境的名称(匹配好自己定义的)
注意:
除了需要动态配置的配置文件之外,resource里面还有很多其他的文件夹:如rules里面的校验,mapper里面的sql,还有static里面的静态资源等。
如果不按照以上配置,会提示mapper的sql找不到,页面访问404,日志文件配置读不到等多种问题。
最后:
对比我的文档结构和配置,调整自己的文档结构和配置
配置不是全部复制下来就可以的了,还是要结合自己的实际情况相应修改。