spring.profiles.include 不适用于命令行参数
Posted
技术标签:
【中文标题】spring.profiles.include 不适用于命令行参数【英文标题】:spring.profiles.include does not work from command line parameter 【发布时间】:2017-06-26 08:51:51 【问题描述】:我制作了一个简单的 Spring Boot 应用程序并将其打包为 JAR。 当我打电话时
java -jar target/boot-active-include-0.0.1-SNAPSHOT.jar
我明白了
未设置活动配置文件,回退到默认配置文件:默认
当我打电话时
echo spring.profiles.include=B > application.properties
java -jar target/boot-active-include-0.0.1-SNAPSHOT.jar
我明白了
以下配置文件处于活动状态:B
当我打电话时
rm application.properties
java -Dspring.profiles.include=B -jar target/boot-active-include-0.0.1-SNAPSHOT.jar
我明白了
未设置活动配置文件,回退到默认配置文件:默认
但我希望以下配置文件处于活动状态:B
我可以从命令行包含 Spring 配置文件吗?
版本:1.5.1.RELEASE
PS。 spring.profiles.active
按预期工作。但我不想替换活动的个人资料。
【问题讨论】:
您确定您使用的是 1.5.1 吗?由于此更改,这应该可以工作:github.com/spring-projects/spring-boot/commit/…。另一件要仔细检查的事情是您将主要方法 args 数组传递到您的SpringApplication
@AndyWilkinson 我确定,请参阅github.com/michaldo/so-issue1
【参考方案1】:
我知道现在发生了什么,我认为这可能是我在制作 this change 时错过的东西。
在此更改之前,spring.profiles.include
仅在用于配置文件时才被考虑。在此更改之后,只要还设置了spring.profiles.active
,现在就可以从任何来源(系统属性、命令行参数等)考虑spring.profiles.include
。
您可以通过设置两个属性来运行示例来看到这一点:
java -Dspring.profiles.include=alpha -Dspring.profiles.active=bravo -jar target/boot-active-include-0.0.1-SNAPSHOT.jar
alpha
和 bravo
配置文件均处于活动状态:
2017-02-09 11:30:49.467 INFO 40409 --- [ main] my.Example : The following profiles are active: alpha,bravo
我已经打开了an issue,以便我们解决这个问题。
【讨论】:
以上是关于spring.profiles.include 不适用于命令行参数的主要内容,如果未能解决你的问题,请参考以下文章
spring.profiles.active和spring.profiles.include的使用与区别
spring.profiles.include 不适用于命令行参数