一般来说,项目开发分为开发环境(dev)
、 测试环境(test)
、 预生产环境(pre)
、 生产环境(prod)
。不同环境之间的配置存在一定的差异,我们需要根据不同的部署环境切换配置文件,下面来说一下如何区分不同环境进行配置。
配置文件准备
准备下图对应的application-*.properties
文件。
- application.properties: 公共配置
- application-dev.properties: 开发环境配置
- application-test.properties: 测试环境配置
- application-prod.properties: 生产环境配置
pom.xml配置
<resources>
<resource>
<directory>src/main/resources</directory>
<includes>
<include>**/*.properties</include>
<include>**/*.yml</include>
<include>**/*.xml</include>
</includes>
<!-- 是否替换@xx@表示的maven properties属性值 -->
<filtering>true</filtering>
</resource>
</resources>
application.properties
# 此时配置为开发环境
spring.profiles.active=dev
# 此时配置为测试环境
spring.profiles.active=test
# 此时配置为生产环境
spring.profiles.active=prod
上面的配置需要我们在不同环境的时候修改对应的值,这样来说非常的不方便,此时我们可以通过变量的方式进行配置,下面我们进行修改。
pom.xml中添加
<profiles>
<!--开发环境-->
<profile>
<id>dev</id>
<properties>
<env>dev</env>
</properties>
</profile>
<!--测试环境-->
<profile>
<id>test</id>
<properties>
<env>test</env>
</properties>
</profile>
<!--生产环境-->
<profile>
<id>prod</id>
<properties>
<env>prod</env>
</properties>
</profile>
</profiles>
application.properties修改为
# 此时通过env来区分不同环境
spring.profiles.active=@env@
这时我们在IDEA右侧看到如下:
在这里我们可以选择对应的环境
此时我们已经可以通过切换Profiles来切换环境了。但是这种情况下只能通过运行启动类的方式进行启动,像这样:
这样的话才可以应用到Profiles选中的值。
spring-boot:run方式启动
此时不能应用到IDEA右侧选中的Profiles的环境值。
- mvn spring-boot:run -P dev
我们需要在命令后添加指定的环境,像这样:mvn spring-boot:run -P dev
指定以dev的环境进行启动,其中-P
指定pom.xml中对应的profiles的值。此时application.properties配置文件不再生效。
springboot1.x启动
- mvn spring-boot:run -Drun.profiles=dev
springboot2.x启动
- mvn spring-boot:run -Dspring-boot.run.profiles=test
运行jar包
java -jar -Dspring.profiles.active=test demo.jar
# 或者
java -jar --spring.profiles.active=test demo.jar
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。