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

新手上路,请多包涵

我正在尝试使用 Maven 3 在 Spring Boot 应用程序中设置活动配置文件。

在我的 pom.xml 中,我将 默认活动配置文件 和属性 spring.profiles.active 设置development

 <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 活动配置文件?

任何帮助高度赞赏。

原文由 Michał Szewczyk 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 917
2 个回答

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

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

您需要将构建变量传递给您的应用程序,以便它在启动时可用。

  1. application.properties 中定义一个占位符:
    spring.profiles.active=@spring.profiles.active@

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

  1. 在 pom.xml 中启用资源过滤:
    <build>
       <resources>
           <resource>
               <directory>src/main/resources</directory>
               <filtering>true</filtering>
           </resource>
       </resources>
       …
   </build>

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

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

原文由 Daniel Olszewski 发布,翻译遵循 CC BY-SA 3.0 许可协议

或者更容易:

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

原文由 Thomas Escolan 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题