【问题标题】:Manage Spring Boot Profiles with Gradle使用 Gradle 管理 Spring Boot 配置文件
【发布时间】:2021-05-09 00:57:46
【问题描述】:

我有一个由 Gradle 管理的 Spring Boot 应用程序。

到目前为止做了什么:

  1. 已创建 application.yamlapplication-dev.yamlapplication-qa.yaml 文件
  2. application.yaml 中提到了spring: profiles: active: dev(如果没有提到,默认配置文件应该是dev

需要做什么:

  1. 需要在构建时使用提及或传递的配置文件构建war。例如,对于 QA 构建,spring: profiles: active: 应该具有值 qa,以便它可以获取 application-qa.yaml 属性。
  2. 如果没有通过配置文件,则默认情况下应选择dev 配置文件

到目前为止的尝试:

  1. spring: profiles: active: @activeProfiles@application.yaml 中添加@activeProfiles@ 并在build.gradle 中添加到sn-p 下方:

    processResources {
        filter org.apache.tools.ant.filters.ReplaceTokens, tokens: [
            activeProfiles: activeProfiles
        ]
    }
    

    并触发以下命令来构建war - gradlew clean build -PactiveProfiles=qa,它为war 文件做了正确的工作。但是现在这种方法的问题是,如何在从 IDE 运行项目时为 activeProfiles 提供默认值(我通常更喜欢从 IntelliJ 运行 main 类)?

我也不确定这是否是正确的方法,或者是否有任何其他方法可以完成此任务。我已经用 Maven 轻松完成了所有这些工作,但我是 Gradle 新手,使用 Gradle 是项目要求。

【问题讨论】:

  • 我没有使用过 intelliJ,但听起来你需要设置的是运行配置。你可以在那里提供默认运行参数jetbrains.com/help/idea/go-plugin-run-debug-configurations.html
  • 但是我需要传递哪些参数以及如何传递?
  • stackoverflow.com/questions/2066307/… 这应该会有所帮助。在 Eclipse 中,您几乎可以提供文本 -PactiveProfiles=qa 作为参数。应该和intellij类似
  • @Kasun 我试过了,但是没用
  • 我已经解决了这个问题。在下面检查我的答案。

标签: java spring-boot gradle build profile


【解决方案1】:

在不同环境中切换配置文件的一种常见方法是将SPRING_PROFILES_ACTIVE 环境变量设置为您想要的值,然后让 Spring 引导使用它。例如,在 QA 环境中,您可以将值设置为 qa,Spring 将自动使用 qa 应用程序属性。 阅读更多:https://docs.spring.io/spring-boot/docs/current/reference/html/howto.html#howto-set-active-spring-profiles

【讨论】:

  • 不,我不想那样做。我想在运行/构建代码时提及配置文件。
【解决方案2】:

如果在运行/构建代码时没有传递配置文件,我可以设置默认配置文件,使用build.gradle 文件中的以下配置。在任何 IDE 中都不需要额外的配置来运行项目。

def activeProfiles=project.properties['activeProfiles'] ?: "dev" // set default (dev) profile if no profile is passed as property

processResources {
    filter org.apache.tools.ant.filters.ReplaceTokens, tokens: [
        activeProfiles: activeProfiles
    ]
}

根据环境,我有 3 个 yaml 文件用于配置:

  1. application.yaml
  2. application-dev.yaml
  3. application-qa.yaml

application.yaml 包含以下配置,用于弹簧配置文件管理,以及其他常见配置:

spring:
    profiles:
        active: @activeProfiles@
...

application-dev.yamlapplication-qa.yaml 文件包含与各自环境相关的配置。

【讨论】:

    猜你喜欢
    • 2017-09-29
    • 2019-07-01
    • 2022-12-23
    • 2017-10-11
    • 2021-07-17
    • 2020-01-21
    • 1970-01-01
    • 2018-12-24
    • 1970-01-01
    相关资源
    最近更新 更多