Java FAT JAR外部的Spring引导属性
我正在做一个项目,有一个用例,我需要从JAR外部为Spring启动提供application.properties文件 根据,提取application.properties的优先级顺序为Java FAT JAR外部的Spring引导属性,java,spring,spring-boot,config,executable-jar,Java,Spring,Spring Boot,Config,Executable Jar,我正在做一个项目,有一个用例,我需要从JAR外部为Spring启动提供application.properties文件 根据,提取application.properties的优先级顺序为 当前目录的/config子目录 当前目录 类路径/配置包 类路径根 前两个的问题是我需要导航到包含配置的目录来运行JAR。在本地工作时,这听起来没有问题,但在通过CI/CD框架在远程主机上部署时,这不是一个可行的解决方案 我试图找到一种使用类路径的机制,避免使用上面提到的SpringBoot命令行选项或设置环
Spring.config.location
属性定义外部配置位置。更具体地说:
如果spring.config.location
包含目录(与文件相反),
它们应该以/(结尾,并在运行时附加名称
加载前从spring.config.name
生成,包括
配置文件特定的文件名)。
中指定的文件
spring.config.location
按原样使用,不支持
特定于配置文件的变量,并由任何特定于配置文件的变量覆盖
财产
配置位置按相反顺序搜索。默认情况下
配置的位置包括:
classpath:/,classpath:/config/,file:./,file:./config/
结果
搜索顺序如下:
file:./config/file:./classpath:/config/classpath://
当习惯
配置位置是使用spring.config.location
配置的,它们
替换默认位置。例如,如果spring.config.location
已使用值配置
classpath:/custom config/,文件:./custom config/
搜查令
变为以下内容:
文件:./custom-config/classpath:custom-config/
或者,当
自定义配置位置是通过使用
spring.config.additional location
,除了
默认位置。
在搜索之前搜索其他位置
默认位置。例如,如果
classpath:/custom config/,文件:./custom config/
如果已配置,则
搜索顺序如下所示:
file:./custom-config/classpath:custom-config/file:./config/file:./classpath:/config/classpath://
包含外部configi的目录的示例用法如下:
java -jar myproject.jar --spring.config.location=file:/custom-config-dir/
或直接指向外部配置文件:
java -jar myproject.jar --spring.config.location=file:/custom-config-dir/custom-config.properties
将自定义配置位置指定为VM参数是另一个选项
java -Dspring.config.location=<config-dir-path> -jar demo.jar
java-Dspring.config.location=-jar demo.jar
您是否尝试过使用java-jar app.jar--spring.config.location=other location.properties
嘿,我希望直接使用类路径,而不必使用spring启动时提供的选项,例如spring.config、loader.config等,只需使用jar、属性文件和类路径来指定jar和配置所需的位置。(最后2个优先级选项)此线程上的更多选项。感谢您的回答,但我们正在尝试在不使用spring提供的运行时选项的情况下实现它。我在问题中添加了一个编辑。你知道一种与之相一致的方法吗?你所说的spring提供的运行时选项是什么意思。你的意思是通过休息服务之类的东西来休息吗。你想在应用程序运行时更改运行时的属性吗?我的意思是spring启动运行时选项设置spring.config、loader.path等。我只想使用classpath和jar。他们很欣赏答案,但我们正在尝试在不使用spring提供的运行时选项的情况下实现它。我在问题中添加了一个编辑。你知道一种与之相一致的方法吗?