Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Add jar file to spring-boot classpath at runtime

I want develop a modular application using spring-boot and plugins. The plugins will be handled with spring-plugin and these are stored in jars files in a directory (for example: /home/application/plugins).How can I add jars files to the application classpath at runtime and loading classes and beans (plugins) that are in these jars files. Best regards, HLicea

like image 763
user2565228 Avatar asked Feb 11 '23 20:02

user2565228


2 Answers

You need to use PropertiesLauncher instead of JarLauncher:

java -cp "yourBoot.jar" -Dloader.path=plugins/ -Dloader.main=your.mainClass org.springframework.boot.loader.PropertiesLauncher

This will make java load the jars in the plugins directory and spring load all the classes in those jars marked as @Configuration into the context.

like image 58
Camilo Sanchez Avatar answered Feb 13 '23 23:02

Camilo Sanchez


I believe "standard" java approach should work here, e.g. for Linux:

java -cp "yourBoot.jar:plugins/*" org.springframework.boot.loader.JarLauncher

Only trick is that I have taken Main-Class from boot's uberjar.

like image 38
sodik Avatar answered Feb 13 '23 23:02

sodik