Carlos Alberto
Carlos Alberto

Reputation: 8585

External library folder for Spring Boot

I wonder how to externalize all jdbc drivers for my Spring Boot applications, I would not like to insert jdbc drivers into my fat jar once the application is built.

Is there any way to set a java vm parameter, informing which external folder should be included with jar execution? Or may else exists some kind of spring property for it.

For example:

java  -DLib=file:\\\c:\Drivers -jar sample.jar

Upvotes: 17

Views: 38464

Answers (3)

Sandeep Kumar
Sandeep Kumar

Reputation: 692

CLASSPATH and -classpath will not be working in case of running Spring boot jar file. So there are below options are available:

  • Use -Dloader.path e.g. java -cp MyOwn.jar -Dloader.path=C:\Sandeep\lib -Dconsole.level=INFO -Dloader.main=abc.Main org.springframework.boot.loader.PropertiesLauncher --spring.config.name=application

  • Another option to place other jars into the JRE/lib/ext directory

  • Third option, open Spring Boot Jar with WinRAR application and add the jar file into the Spring Boot jar

Upvotes: 1

Chris White
Chris White

Reputation: 30089

See the documentation about PropertiesLauncher:

Looks like you can use the loader.path property to define a lib folder location, containing jars to load - in fact the lib folder (inline with the jar) is the default location:

loader.path (if empty) defaults to lib (meaning a local directory or a nested one if running from an archive)

Upvotes: 9

Jigish
Jigish

Reputation: 1784

Isn't that what the classpath is for? As long as the jdbc driver jars are on the classpath, this should work. Something like this:

java -classpath /path/to/driver/jar -jar application.jar

You could also set the CLASSPATH environment variable for the same.

Upvotes: -2

Related Questions