在 Spring Boot 中从命令行设置活动配置文件和配置位置

新手上路,请多包涵

我有一个弹簧启动应用程序。

我的 application-> development, staging and production 中有三个配置文件。所以我有3个文件

  1. 应用程序开发.yml
  2. 应用程序-staging.yml
  3. 应用程序生产.yml

我的 application.yml 位于 src/main/resources 内。我已将 application.yml 中的活动配置文件设置为:

 spring:
  profiles.active: development

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

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

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

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

我想我在这里遗漏了一些东西。在过去的两天里,我一直试图弄清楚。但没有运气。我真的很感激任何帮助。

原文由 Vinod Mohanan 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 791
2 个回答

我不得不添加这个:

 bootRun {
    String activeProfile =  System.properties['spring.profiles.active']
    String confLoc = System.properties['spring.config.location']
    systemProperty "spring.profiles.active", activeProfile
    systemProperty "spring.config.location", "file:$confLoc"
}

现在 bootRun 获取配置文件和配置位置。

非常感谢@jst 的指针。

原文由 Vinod Mohanan 发布,翻译遵循 CC BY-SA 3.0 许可协议

您可以通过两种不同的方式在命令行上添加/覆盖 spring 属性。

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

重要的是 -D 参数在您的 application.jar 之前,否则它们将无法识别。

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

选项 2:程序参数

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

原文由 RenRen 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题