我有一个弹簧引导应用程序。

我的应用程序中有三个概要文件——>开发、登台和生产。我有3个文件

application-development.yml application-staging.yml application-production.yml

我的应用程序。Yml位于src/main/resources中。我已经在应用程序中设置了活动配置文件。Yml为:

spring:
  profiles.active: development

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

我正在为eclipse使用gradle插件。当我尝试做一个“bootRun”,我设置命令行参数在我的gradle配置在eclipse为

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

然而,命令行属性没有得到反映,我的活动概要文件总是被设置为开发(这是我在应用程序中提到的一个)。yml文件)。此外,C:\Config文件夹不会搜索配置文件特定的配置文件。

我想我遗漏了一些东西。过去两天我一直在想这件事。但运气不好。我非常感激你的帮助。


当前回答

我们希望根据spring.profiles.active中提到的配置文件名称和-Dspring.config.location中的路径自动选择属性文件

application-dev.properties

如果我们在Unix操作系统中运行jar,那么我们必须在-Dspring.config的末尾使用/。位置,否则将给出以下错误。

错误::java.lang.IllegalStateException:配置文件位置' File:/home/xyz/projectName/cfg'的文件扩展名对任何PropertySourceLoader都不知道。如果位置是为了引用一个目录,它必须以'/'结尾

例子

java -Dspring.profiles.active=dev -Dspring.config.location=/home/xyz/projectName/cfg/ -jar /home/xyz/project/abc.jar

or

java -jar /home/xyz/project/abc.jar --spring.profiles.active=dev --spring.config.location=/home/xyz/projectName/cfg/

其他回答

对我来说,在配置文件位置的末尾添加“/”是有帮助的。

Java -jar myjar.jar——spring.config。additional-location = env /——spring.profiles.active =刺激

这将解决你在windows上的问题:

mvn spring-boot:run -D"spring-boot.run.profiles"=env

有两种不同的方法可以在命令行上添加/覆盖spring属性。

选项1:Java系统属性(虚拟机参数)

-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

我在springboot的命令行中使用不同的配置文件运行测试时也遇到了类似的问题。我通过首先设置配置文件,然后运行测试命令来解决这个问题,如下所示:

步骤1:导出SPRING_PROFILES_ACTIVE=test(mac/linux)或SET SPRING_PROFILES_ACTIVE=test(windows)

Step2: ./gradlew测试——测试com.maersk.snd.integrationtest.IntegrationTestPOC"

以上命令可以像下面这样组合在一起:

export SPRING_PROFILES_ACTIVE=test && ./gradlew test——tests "com.maersk.snd.integrationtest.IntegrationTestPOC"

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

不正确。

应该是:

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