[英]Manage Spring Boot Profiles with Gradle
我有一個由 Gradle 管理的 Spring 引導應用程序。
到目前為止做了什么:
application.yaml
、 application-dev.yaml
和application-qa.yaml
文件spring: profiles: active: dev
application.yaml
如果未提及,默認配置文件應為dev
人員)需要做什么:
war
。 例如,對於 QA 構建, spring: profiles: active:
應該具有值qa
,以便它可以獲取application-qa.yaml
屬性。dev
配置文件到目前為止嘗試了什么:
在 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 文件,用於根據環境進行配置:
application.yaml
application-dev.yaml
application-qa.yaml
application.yaml
包含 spring 配置文件管理的以下配置,以及其他常見配置:
spring:
profiles:
active: @activeProfiles@
...
application-dev.yaml
和application-qa.yaml
文件包含與各自環境相關的配置。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.