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

alphabravo 配置文件均处于活动状态:

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 不适用于命令行参数

spring boot 配置属性 之 spring.profiles.include

时光不老我们不散啥意思 怎么理解时光不老我们不散的意思

时光不老我们不散这句话是啥意思 时光不老我们不散这句话解释

C语言 不允许使用不完整的类型