在春季引导中从命令行设置活动配置文件和配置位置

2022-08-31 05:24:22

我有一个弹簧靴应用程序。

我在应用程序>开发、暂存和生产方面有三个配置文件。所以我有3个文件

  1. application-development.yml
  2. application-staging.yml
  3. application-production.yml

我的应用程序.yml驻留在里面。我已将 application.yml 中的活动配置文件设置为:src/main/resources

spring:
  profiles.active: development

其他 3 个特定于配置文件的配置文件存在于文件夹中。C:\config

我正在使用gradle插件进行日食。当我尝试执行“bootRun”时,我在 eclipse 中的 gradle 配置中将命令行参数设置为

 -Dspring.profiles.active=staging -Dspring.config.location=C:\Config

但是,命令行属性没有得到反映,我的活动配置文件总是被设置为开发(这是我在 applications.yml 文件中提到的那个)。此外,不会在 C:\Config 文件夹中搜索特定于配置文件的配置文件。

我想我在这里错过了一些东西。在过去的2天里,我一直在努力弄清楚。但是没有运气。我真的非常感谢任何帮助。


答案 1

有两种不同的方法可以在命令行上添加/覆盖弹簧属性。

选项 1:Java 系统属性(VM 参数)

-D 参数必须位于应用程序之前.jar否则将无法识别它们。

java -jar -Dspring.profiles.active=prod application.jar

选项 2:程序参数

java -jar application.jar --spring.profiles.active=prod --spring.config.location=c:\config

答案 2

我的最佳做法是将其定义为 VM “-D” 参数。请注意弹簧靴1.x和2.x之间的差异。

可以在命令行上指定要启用的配置文件:

Spring-Boot 2.x (仅适用于 maven)

-Dspring-boot.run.profiles=local

弹簧靴 1.x

-Dspring.profiles.active=local

maven 的示例用法:

弹簧靴 2.x

mvn spring-boot:run -Dspring-boot.run.profiles=local

弹簧靴 1.x 和 2.x

mvn spring-boot:run -Dspring.profiles.active=local

确保用逗号分隔多个配置文件:

mvn spring-boot:run -Dspring.profiles.active=local,foo,bar
mvn spring-boot:run -Dspring-boot.run.profiles=local,foo,bar

推荐