Warm tip: This article is reproduced from serverfault.com, please click

java-使用 Gradle 管理 Spring Boot 配置文件

(java - Manage Spring Boot Profiles with Gradle)

发布于 2021-02-04 17:11:22

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

到目前为止做了什么:

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

需要做什么:

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

到目前为止尝试了什么:

  1. @activeProfiles@spring: profiles: active: @activeProfiles@添加application.yaml以下代码段中添加build.gradle

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

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

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

Questioner
Jignesh M. Khatri
Viewed
0
Jignesh M. Khatri 2021-02-25 02:17:11

如果在运行/构建代码时没有传递配置文件,我能够设置默认配置文件,使用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 配置文件管理的配置,以及其他常见配置:

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

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