使用Maven配置文件激活Spring Boot配置文件

使用Maven配置文件激活Spring Boot配置文件

转载自http://dolszewski.com/spring/spring-boot-properties-per-maven-profile/

有些团队更喜欢为每个应用程序运行时环境提供单独的Maven构建配置文件,例如dev,test,prod等。在本文中,我将向您展示如何使用Spring Boot配置文件连接Maven配置文件。您将学习如何使用Maven的pom.xml文件设置活动的Spring配置文件。

Spring配置文件的单独application.properties

您将使用Spring Boot application.properties文件来激活其中一个配置文件。如果您的应用程序资源中没有该文件,则现在是创建该文件的正确时机。

通常,我们希望使用Maven选择活动的Spring配置文件来构建具有所选配置文件的JAR / WAR文件。该演示将向您展示如何做到这一点。

首先,创建两个额外的配置文件。文件名应与模式application- {profile} .properties匹配。将文件添加到Maven项目的src / main / resources目录中,位于主application.properties文件旁边。

img

Maven配置

然后是时候修改你的pom.xml了。您创建了两个配置文件,因此现在需要定义两个Maven配置文件。

在两个Maven配置文件中,定义一个自定义属性并调用它,例如,activateProperties。这个名字并不重要。更重要的是它的价值。

自定义Maven属性的值应与要使用相应Maven配置文件激活的Spring配置文件匹配。在我们的示例中,我们将它们称为devrelease

此外,您可以标记默认情况下运行的一个Maven配置文件。如果您不自行选择一个配置文件,则以下示例将激活第一个配置文件。

<profile>
    <id>dev</id>
    <properties>
        <activatedProperties>dev</activatedProperties>
    </properties>
    <activation>
        <activeByDefault>true</activeByDefault>
    </activation>
</profile>
<profile>
    <id>release</id>
    <properties>
        <activatedProperties>release</activatedProperties>
    </properties>
</profile>

Maven资源过滤

让我们留在pom.xml片刻。在上一步中,您定义了Maven和Spring配置文件之间的映射。但您仍需要将配置文件映射传输到Spring Boot应用程序中。

怎么样?

您将使用Maven 在application.properties文件中使用定义的Maven配置文件中的值设置名为spring.profiles.active的 Spring属性。顾名思义,此属性负责激活Spring配置文件。

为此,您需要允许Maven在构建过程中操作资源文件。您可以通过在pom.xml中启用Resources插件的过滤来完成此操作。但是,如果使用spring-boot-starter-parent作为pom.xml的父级,则可以跳过此步骤。

<build>
    <resources>
        <resource>
            <directory>src/main/resources</directory>
            <filtering>true</filtering>
        </resource>
    </resources></build>

现在是时候迈出最后一步了。将以下行添加到application.properties文件中。

spring.profiles.active=@activatedProperties@

*@*字符之间的值必须与Maven配置文件中的自定义属性匹配。

它是如何工作的?

运行构建时,Resources Plugin将使用当前活动的Maven配置文件中的属性替换application.properties中activatedProperties占位符。

启动应用程序后,Spring框架将激活已过滤的application.properties文件中定义的Spring配置文件。接下来,框架根据活动配置文件读取其他application- {profile} .properties文件。

需要注意的是: Spring Boot 1.3替换了过滤值的默认Resources Plugin语法。框架使用*@ activatedProperties @而不是$ {activatedProperties}*表示法。

总结

新建application-prod.yml, application-dev.yml, application-test.yml

内容如下:

#application-dev.yml
server:
  port: 8081
  
#application-test.yml
server:
  port: 8082
  
#application-prod.yml
server:
  port: 8083

在pom文件中添加:

<profiles>
        <profile>
            <id>dev</id>
            <activation>
                <activeByDefault>true</activeByDefault>
            </activation>
            <properties>
                <!-- 自定义属性 -->
                <profileActive>dev</profileActive>
            </properties>
        </profile>
        <profile>
            <id>test</id>
            <properties>
                <profileActive>test</profileActive>
            </properties>
        </profile>
        <profile>
            <id>prod</id>
            <properties>
                <profileActive>prod</profileActive>
            </properties>
        </profile>
    </profiles>

application.yml中添加

spring:
  profiles:
    active: @profileActive@ #这个必须和pom中自定义字段意义

使用下图设置启动方式:
在这里插入图片描述

这是我们设置的是启动id为test的配置, 这时@profileActive@被替换成test

©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页