1

一般来说,项目开发分为开发环境(dev)测试环境(test)预生产环境(pre)生产环境(prod)。不同环境之间的配置存在一定的差异,我们需要根据不同的部署环境切换配置文件,下面来说一下如何区分不同环境进行配置。

配置文件准备

准备下图对应的application-*.properties文件。

  • application.properties: 公共配置
  • application-dev.properties: 开发环境配置
  • application-test.properties: 测试环境配置
  • application-prod.properties: 生产环境配置

image.png

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右侧看到如下:

在这里我们可以选择对应的环境

image.png

此时我们已经可以通过切换Profiles来切换环境了。但是这种情况下只能通过运行启动类的方式进行启动,像这样:

image.png

这样的话才可以应用到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

风里有诗句
29 声望3 粉丝