簡體   English   中英

使用 Gradle 管理 Spring 引導配置文件

[英]Manage Spring Boot Profiles with Gradle

我有一個由 Gradle 管理的 Spring 引導應用程序。

到目前為止做了什么:

  1. 創建application.yamlapplication-dev.yamlapplication-qa.yaml文件
  2. 提到spring: profiles: active: dev application.yaml如果未提及,默認配置文件應為dev人員)

需要做什么:

  1. 需要在構建時使用提到或傳遞的配置文件來構建war 例如,對於 QA 構建, spring: profiles: active:應該具有值qa ,以便它可以獲取application-qa.yaml屬性。
  2. 如果沒有通過配置文件,則默認情況下應選擇dev配置文件

到目前為止嘗試了什么:

  1. 在 spring 中添加了@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文件做了正確的工作。 但是現在這種方法的問題是,如何在從 IDE 運行項目時為activeProfiles提供默認值(我通常更喜歡從 IntelliJ 運行main class)?

我也不確定這是否是正確的方法,或者是否有任何其他方法可以完成此任務。 我已經用 Maven 輕松完成了所有這些工作,但我是 Gradle 的新手,使用 Gradle 是項目要求。

在不同環境中切換配置文件的一種常見方法是將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

如果在運行/構建代碼時沒有傳遞配置文件,我可以設置默認配置文件,使用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文件包含與各自環境相關的配置。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM