java启动jar包引入外部配置文件

本文介绍了如何在Spring Boot应用中优先使用外部的`application-test.yml`配置文件,而非jar包内的配置。通过调整启动命令,如使用`-Dspring.config.location`参数指定配置文件路径,但遇到配置文件包含`spring.profiles`属性时导致加载失败,解决方案是在启动命令中添加`--spring.profiles`参数。同时讨论了`spring.config.location`与`spring.config.additional-location`的区别,并提醒注意启动脚本路径与配置文件路径的一致性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前提:

打出来的jar中已经包含了各个application-xxx.yml文件,jar所在位置也引入了外部的application-test.yml。

目的:运行时,希望使用的时外部 application-test.yml  文件。

使用了以下命令:

java -Xms1024m -Xmx2048m -jar  /home/test/my-test-app-0.0.1.jar  --spring.config.location=./application-test.yml  --logging.config=./logback.xml  -server my-test-app &

可以启动,但是,使用的时jar包里面的application-test.yml配置,而不是外部的application-test.yml文件。

解决问题:

使用-D命令设置系统属性

java -Xms1024m -Xmx2048m -jar  -Dspring.config.location=./application-test.yml /home/test/my-test-app-0.0.1.jar   --logging.config=./logback.xml  -server my-test-app &

或者:

java -Xms1024m -Xmx2048m -jar  -Dspring.config.location=./application-test.yml -Dlogging.config=./logback.xml /home/test/my-test-app-0.0.1.jar -server my-test-app &

启动时,如果直接在jar包所在的目录启动, 例如java -jar的方式, 那么会自动加载config或者根目录下的配置文件(properties, yml)
如果使用脚本的启动方式, 那么可能你的执行脚本路径和脚本所在路径不在同一目录, 那么这个时候可以使用绝对路径来配置, 例如:

java -jar ./test.jar --spring.config.additional-location=../config/ --spring.profiles.active=dev

spring.config.location  :会覆盖内部配置参数
spring.config.additional-location :会和内部配置参数互补

问题:

在测试过程种,如果引入的application文件包含spring.profile 属性,会导致引用失败,所以需要删掉这个文件,如果需要使用spring.profile 则需要在启动的脚本中加入这个配置项:

java -Xms1024m -Xmx2048m -jar  -Dspring.config.location=./application-test.yml -Dlogging.config=./logback.xml /home/test/my-test-app-0.0.1.jar --spring.profile=test -server my-test-app &

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值