不存在从application.properties文件覆盖spring.profiles.active的值的方法吗?

时间:2017-01-31 12:17:35

标签: spring gradle

我在application.properties文件中设置了默认配置文件,如下所示:

spring.profiles.active=production

但是我希望能够使用以下命令更改另一个(测试或开发)的生产配置文件:

gradle -Pspring.profiles.active=production bootRun

目前,始终加载生产概要文件(在application.properties文件中设置)。我读到这是不可能的,但我认为这必须是一个解决方法......任何人都可以帮助我吗?谢谢!

3 个答案:

答案 0 :(得分:0)

您可以关注this

  

我最终做了以下事情:

run {
  systemProperties = System.properties
}
     

现在命令

gradle bootRun -Dspring.config.location=/somewhere/application.properties
     

作品。

或者,您也可以使用环境变量:

SPRING_PROFILES_ACTIVE=test gradle bootRun

来源:

答案 1 :(得分:0)

bootRun { systemProperties['spring.profiles.active']=project.gradle.st‌​artParameter.systemP‌​ropertiesArgs['sprin‌​g.profiles.active']; }

也为我工作。在第一个解决方案中,如果您未在命令行中输入其中一个已定义的配置文件,则bootRun任务将失败。但在第二个中,它从application.properties加载配置文件。所以,我将使用第二种解决方案。

答案 2 :(得分:0)

您可以为此添加一个环境变量。 在Mac上,这可以像这样完成

exsl

完成此操作后,您应该可以运行您的应用程序了。我自己使用gradle尝试了这一点,并且使用export SPRING_PROFILES_ACTIVE=production

完美地运行