使用 Gradle 管理 Spring 引导配置文件
Manage Spring Boot Profiles with Gradle
我有一个 Spring 引导应用程序,由 Gradle 管理。
目前做了什么:
- 创建了
application.yaml
、application-dev.yaml
和 application-qa.yaml
个文件
- 在
application.yaml
中提到 spring: profiles: active: dev
(如果提到 none,则默认配置文件应为 dev
)
需要做的事情:
- 需要构建
war
并在构建时提及或通过配置文件。例如,对于 QA 构建,spring: profiles: active:
应该具有值 qa
,以便它可以获取 application-qa.yaml
属性。
- 如果没有传递配置文件,则默认情况下应选择
dev
配置文件
目前尝试的内容:
在 application.yaml
中的 spring: profiles: active: @activeProfiles@
中添加了 @activeProfiles@
并在 build.gradle
中添加了以下代码段:
processResources {
filter org.apache.tools.ant.filters.ReplaceTokens, tokens: [
activeProfiles: activeProfiles
]
}
并触发了以下命令来构建 war
- gradlew clean build -PactiveProfiles=qa
,它对 war
文件做了正确的工作。但是现在这种方法的问题是,如何在 运行 从 IDE 中设置项目时为 activeProfiles
提供默认值(我通常更喜欢 运行 main
class 来自 IntelliJ)?
我也不确定这是否是正确的方法,或者是否有任何其他方法可以完成此任务。我已经用 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
如果在 running/building 代码中没有传递配置文件,我可以设置默认配置文件,使用 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
文件包含与各自环境相关的配置。
我有一个 Spring 引导应用程序,由 Gradle 管理。
目前做了什么:
- 创建了
application.yaml
、application-dev.yaml
和application-qa.yaml
个文件 - 在
application.yaml
中提到spring: profiles: active: dev
(如果提到 none,则默认配置文件应为dev
)
需要做的事情:
- 需要构建
war
并在构建时提及或通过配置文件。例如,对于 QA 构建,spring: profiles: active:
应该具有值qa
,以便它可以获取application-qa.yaml
属性。 - 如果没有传递配置文件,则默认情况下应选择
dev
配置文件
目前尝试的内容:
在
application.yaml
中的spring: profiles: active: @activeProfiles@
中添加了@activeProfiles@
并在build.gradle
中添加了以下代码段:processResources { filter org.apache.tools.ant.filters.ReplaceTokens, tokens: [ activeProfiles: activeProfiles ] }
并触发了以下命令来构建
war
-gradlew clean build -PactiveProfiles=qa
,它对war
文件做了正确的工作。但是现在这种方法的问题是,如何在 运行 从 IDE 中设置项目时为activeProfiles
提供默认值(我通常更喜欢 运行main
class 来自 IntelliJ)?
我也不确定这是否是正确的方法,或者是否有任何其他方法可以完成此任务。我已经用 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
如果在 running/building 代码中没有传递配置文件,我可以设置默认配置文件,使用 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
文件包含与各自环境相关的配置。