我有一个弹簧引导应用程序。
我的应用程序中有三个概要文件——>开发、登台和生产。我有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文件夹不会搜索配置文件特定的配置文件。
我想我遗漏了一些东西。过去两天我一直在想这件事。但运气不好。我非常感激你的帮助。
我的最佳实践是将其定义为VM“-D”参数。请注意弹簧靴之间的区别。X和2.x。
要启用的概要文件可以在命令行上指定:
Spring-Boot 2。X(仅适用于maven)
-Dspring-boot.run.profiles=local
Spring-Boot 1.倍
-Dspring.profiles.active=local
maven的用法示例:
Spring-Boot 2.倍
mvn spring-boot:run -Dspring-boot.run.profiles=local
Spring-Boot 1。X和2.x
mvn spring-boot:run -Dspring.profiles.active=local
对于多个配置文件,请确保用逗号分隔它们:
mvn spring-boot:run -Dspring.profiles.active=local,foo,bar
mvn spring-boot:run -Dspring-boot.run.profiles=local,foo,bar
我们希望根据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/