前言
在开发时,配置文件一般区分开发环境、测试环境和生产环境。针对不同环境有不同的配置,例如:生产环境的api地址和测试环境的api地址不同等。这时候一般都是每个环境有一个配置文件,在发布时根据环境选择对应的配置文件即可。在 Asp.Net Mvc 中使用 Web.config(开发)、Web.Debug.config(测试)、Web.Release.config(生产)文件用于区分环境。在 Spring Boot 中可以通过配置 application.properties 实现。
pom.xml 配置
profile可以让我们定义一系列的配置信息,然后指定其激活条件。这样我们就可以定义多个profile,然后每个profile对应不同的激活条件和配置信息,从而达到不同环境使用不同配置信息的效果。
配置 profile
<profiles>
<profile>
<id>test</id>
<properties>
<environment>test</environment>
</properties>
</profile>
<profile>
<id>prod</id>
<properties>
<environment>prod</environment>
</properties>
</profile>
</profiles>
以上代码定义了两种环境:test是测试环境,prod是生产环境
配置 resource
<resources>
<resource>
<filtering>true</filtering>
<directory>src/main/resources</directory>
<excludes>
<exclude>application-test.properties</exclude>
<exclude>application-prod.properties</exclude>
<exclude>application.properties</exclude>
</excludes>
</resource>
<resource>
<filtering>true</filtering>
<directory>src/main/resources</directory>
<includes>
<include>application-${environment}.properties</include>
<include>application.properties</include>
</includes>
</resource>
</resources>
以上代码很好理解,application-test.properties 是测试环境的配置文件,application-prod.properties 是生产环境的配置文件。${environment} 是在发布时打包传入的参数,通过此参数切换配置文件
application.properties 配置
配置打包时传入的参数
spring.profiles.active = @environment@
mven 打包环境切换
mvn clean package -Dmaven.test.skip=true -P [environment]
environment 是传入的参数,例如生产环境命令
mvn clean package -Dmaven.test.skip=true -P prod
此时打包是使用的 application-prod.properties 文件