pom:
<build>
<filters>
<!-- 定义 filter,即该资源中的值将会用来替换同名属性(设置 filtering 为 true 的资源中的属性)-->
<filter>
src/main/resources/${profileActive}/application.yml
</filter>
</filters>
<resources>
<resource>
<directory>src/main/resources/</directory>
<!--打包时先排除掉三个文件夹-->
<excludes>
<exclude>dev/*</exclude>
<exclude>pro/*</exclude>
</excludes>
<includes>
<!--如果有其他定义通用文件,需要包含进来-->
<!--<include>messages/*</include>-->
</includes>
</resource>
<resource>
<!--根据不同的环境,把对应文件夹里的配置文件打包-->
<directory>src/main/resources/${profileActive}</directory>
</resource>
<resource>
<!--打包该目录下的 application-*.yml -->
<directory>src/main/resources/${profileActive}</directory>
<includes>
<include>application-*.yml</include>
</includes>
<!-- 启用过滤 即该资源中的变量将会被过滤器中的值替换 -->
<filtering>true</filtering>
</resource>
</resources>
</build>
<!--分别设置开发,测试,生产环境-->
<profiles>
<!-- 开发环境 -->
<profile>
<id>dev</id>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
<properties>
<profileActive>dev</profileActive>
</properties>
</profile>
<!-- 测试环境 -->
<profile>
<id>test</id>
<activation>
<activeByDefault>false</activeByDefault>
</activation>
<properties>
<profileActive>test</profileActive>
</properties>
</profile>
<!-- 生产环境 -->
<profile>
<id>pro</id>
<activation>
<activeByDefault>false</activeByDefault>
</activation>
<properties>
<profileActive>pro</profileActive>
</properties>
</profile>
</profiles>
application.yml
spring:
profiles:
active: dev
redis:
host: localhost
application-dev.yml
spring:
redis:
host: ${host}
application.yml指定开发环境为dev,且其中的host端口的值会赋给application-dev.yml中的变量host。