通过 Maven 在 SpringBoot 中配置活动配置文件

2022-08-31 13:44:48

我正在尝试使用Maven 3在Spring Boot应用程序中设置活动配置文件。
在我的pom.xml我将默认的活动配置文件和属性spring.profiles.active设置为开发

<profiles>
    <profile>
        <id>development</id>
        <properties>
            <spring.profiles.active>development</spring.profiles.active>
        </properties>
        <activation>
            <activeByDefault>true</activeByDefault>
        </activation>
    </profile>
</profiles>

但每次运行应用程序时,我都会在日志中收到以下消息:

No active profile set, falling back to default profiles: default

并且 SpringBoot 配置文件设置为默认值(读取 application.properties 而不是 application-development.properties)

我还应该做些什么来使用 Maven 配置文件设置我的 SpringBoot 活动配置文件?
任何帮助都非常感谢。


答案 1

Maven配置文件和Spring配置文件是两个完全不同的东西。pom.xml定义了在构建过程中可用的变量,但在运行时不可用。这就是仅激活默认配置文件的原因。spring.profiles.active

如何将Maven配置文件与Spring绑定?

您需要将生成变量传递给应用程序,以便在启动时可以使用它。

  1. 在 中定义一个占位符:application.properties

    spring.profiles.active=@spring.profiles.active@
    

    该变量必须与 Maven 配置文件中声明的属性匹配。@spring.profiles.active@

  2. 在 pom.xml 中启用资源筛选:

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

    执行构建时,Maven 将处理目录中的所有文件,并且您的占位符将替换为您在 Maven 配置文件中定义的变量。src/main/resourcesapplication.properties

有关更多详细信息,您可以转到我描述此用例的帖子。


答案 2

或者说很简单:

mvn spring-boot:run -Dspring-boot.run.profiles={profile_name}

推荐