Gibi Gibi - 2 months ago 34
Java Question

application.properties outside jar file how to

As stated in spring-boot-reference:


On your application classpath (e.g. inside your jar) you can have an
application.properties that provides a sensible default property value
for name. When running in a new environment, an application.properties
can be provided outside of your jar that overrides the name


I place a duplicated application.properties with overridden name on the same path as jar file, however when running the application with:

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


The name value is not overridden, it still refers to the one inside application.properties inside jar file. I also tried:

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


But it does not work, please help.

Edit

When I change the current directory to
target
and run it, it works.

java -jar myproject-0.0.1-SNAPSHOT.jar


Why? Why cannot be outside the path and run it?

Answer

Just as you say in your edit, it doesn't work because we you trying to launch the jar from another folder.

The reason it doesn't work, is that spring boot looks for files/folder relative your current folder.

You can:

(1) copy application.properties one level below target (in ./ or ./config/)

(2) Or execute like this (without forward slash for the location path):

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