问题
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
回答1:
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.
回答2:
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.
来源:https://stackoverflow.com/questions/28725846/add-jar-file-to-spring-boot-classpath-at-runtime