Reputation: 8585
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
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
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
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