【发布时间】:2018-09-25 17:45:38
【问题描述】:
使用此设置(从 Eclipse 使用 Windows10)
我能够正确启动我的 SpringBoot 应用程序。这个也有效(相同的目录模式):
现在我将我的项目打包为 JAR,并且我想使用外部属性文件。我在同一目录下的 JAR 旁边有一个 teste32.yml 文件(也尝试在 /config 目录中使用它,如显示 here,但它也不起作用)
我想每次都在我的 JAR 文件旁边动态使用一个属性文件。不管它们位于哪个目录,我都想动态地指向一个属性文件,该文件始终与 JAR 位于同一目录中。我想对我的客户说:“拿着这个 JAR 和这个文件,把它们放在你想要的任何地方,然后运行这个命令 X,一切都会好起来的”。我正在尝试发现命令 X,但在添加一些动态路径之前,我正在尝试使用绝对路径。我正在使用这个:
java -jar myJar.jar -Dspring.config.name=teste32 -Dspring.config.location=C:\workspace\myProject\target\
我在target\ 中手动复制了teste32 来测试它。但这没有用。这也不起作用(仅spring.config.location 变体):
-Dspring.config.location=file:C:\workspace\myProject\target\
-Dspring.config.location=classpath:/
-Dspring.config.location=file:C:/workspace/myProject/target/
I also tried with no spring.config.location, only name
所以我的问题是:
-
classpath:和file:是什么意思?到目前为止,我完全靠运气获得了 2 个正确的设置,我想了解何时使用它们。 - 当我将项目包作为 JAR 时,
classpath会变成什么? - 最后,要动态使用始终与 JAR 位于同一目录的属性,需要哪种组合?
更新
在正确的示例中使用--debug 让我在非常乞讨时得到了这条线(Spring 横幅仍然可见):
2018-09-25 15:45:14.480 DEBUG 11360 --- [ main] o.s.b.c.c.ConfigFileApplicationListener : Loaded config file 'file:src/main/resources/xirulei/teste32.yml' (file:src/main/resources/xirulei/teste32.yml)
但是在将myJar.jar 和teste32.yml 移动到特定目录并运行java -jar myJar.jar -Dspring.config.name=teste32 --debug(没有spring.config.location,因为teste32 与JAR 位于同一目录中)之后,我根本没有得到任何ConfigFileApplicationListener 调试行。
【问题讨论】:
标签: java spring spring-boot