External library folder for Spring Boot

37.1k Views Asked by At

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
3

There are 3 best solutions below

3
On BEST ANSWER

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)

2
On

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.

0
On

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