是否有方法覆盖application.properties文件中spring.profiles.active的值?
我在application.properties文件中设置了如下默认配置文件:是否有方法覆盖application.properties文件中spring.profiles.active的值?,spring,gradle,Spring,Gradle,我在application.properties文件中设置了如下默认配置文件: spring.profiles.active=production 但我希望通过使用以下命令,可以使用另一个(测试或开发)更改生产配置文件: gradle -Pspring.profiles.active=production bootRun 目前,始终加载生产配置文件(application.properties文件中设置的配置文件)。我读到这是不可能的,但我认为这必须有一个解决办法。。。有人能帮我吗?谢谢 您
spring.profiles.active=production
但我希望通过使用以下命令,可以使用另一个(测试或开发)更改生产配置文件:
gradle -Pspring.profiles.active=production bootRun
目前,始终加载生产配置文件(application.properties文件中设置的配置文件)。我读到这是不可能的,但我认为这必须有一个解决办法。。。有人能帮我吗?谢谢 您可以按照以下步骤操作:
我最后做了以下几件事:
run {
systemProperties = System.properties
}
现在命令
gradle bootRun -Dspring.config.location=/somewhere/application.properties
工作
或者,也可以使用环境变量:
资料来源:
也为我工作。在第一个解决方案中,如果您没有在命令行中提供一个已定义的概要文件,那么bootRun任务将失败。但在第二个示例中,它从application.properties加载概要文件。因此,我将使用第二种解决方案。您可以为此添加一个环境变量。 在Mac上,可以这样做
export SPRING_PROFILES_ACTIVE=production
完成此操作后,您应该能够运行应用程序。我自己用gradle试过这个,它在使用
gradle bootRun
时运行得非常好,谢谢你的重播,但对我来说不起作用。相反,我找到了另一种解决方法:project.gradle.projectsEvaluated{applicationDefaultJvmArgs=[“-Dspring.profiles.active=${project.gradle.startParameter.systemPropertiesArgs['spring.profiles.active']}}好的!你能用你的解决方案发布答案吗?我正在编辑我的第一条评论,以便在你写评论时添加解决方案。。。现在,它是可用的。:)
bootRun { systemProperties['spring.profiles.active']=project.gradle.startParameter.systemPropertiesArgs['spring.profiles.active']; }
export SPRING_PROFILES_ACTIVE=production