application.properties外面的jar文件怎么样

Gib*_*ibi 14 java classpath spring-boot

spring-boot-reference中所述:

在应用程序类路径上(例如在jar中),您可以拥有一个application.properties,它为name提供合理的默认属性值.在新环境中运行时,可以在jar外部提供覆盖名称的application.properties

我将重复的application.properties与覆盖的名称放在与jar文件相同的路径上,但是在运行应用程序时:

java -jar target/myproject-0.0.1-SNAPSHOT.jar
Run Code Online (Sandbox Code Playgroud)

名称值没有被覆盖,它仍然指的是jar文件中的application.properties里面的一个.我也尝试过:

java -Dspring.config.location=/target/application.properties -jar target/myproject-0.0.1-SNAPSHOT.jar
Run Code Online (Sandbox Code Playgroud)

但它不起作用,请帮忙.

编辑

当我将当前目录更改为target并运行它时,它可以工作.

java -jar myproject-0.0.1-SNAPSHOT.jar
Run Code Online (Sandbox Code Playgroud)

为什么?为什么不能在路径之外运行呢?

ale*_*xbt 28

它不起作用,因为您尝试从另一个文件夹启动jar:spring boot查找相对于当前文件夹的文件/文件夹.

您可以:

1)复制application.properties无论是在././config/相对于当前文件夹.

2)或指定-Dspring.config.location:

$ java -Dspring.config.location=target/application.properties -jar target/myproject-0.0.1-SNAPSHOT.jar
Run Code Online (Sandbox Code Playgroud)