jar文件外的application.properties如何

如spring-boot-reference中所述 :

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

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

java -jar target/myproject-0.0.1-SNAPSHOT.jar 

名称值未被覆盖,它仍然指的是jar文件中的application.properties内部的一个。 我也尝试过:

 java -Dspring.config.location=/target/application.properties -jar target/myproject-0.0.1-SNAPSHOT.jar 

但它不起作用,请帮忙。

编辑

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

 java -jar myproject-0.0.1-SNAPSHOT.jar 

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

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

您可以:

1)相对于当前文件夹,以././config/复制application.properties

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

 $ java -Dspring.config.location=target/application.properties -jar target/myproject-0.0.1-SNAPSHOT.jar 

你将config拼写为conig ,如果拼写正确,应该可以正常工作。