diff --git a/src/main/java/run/halo/app/plugin/PluginAutoConfiguration.java b/src/main/java/run/halo/app/plugin/PluginAutoConfiguration.java index fdff6fb24..362cfd8fb 100644 --- a/src/main/java/run/halo/app/plugin/PluginAutoConfiguration.java +++ b/src/main/java/run/halo/app/plugin/PluginAutoConfiguration.java @@ -107,17 +107,30 @@ public class PluginAutoConfiguration { } else { return new CompoundPluginLoader() .add(new DevelopmentPluginLoader(this) { + + @Override + protected PluginClassLoader createPluginClassLoader(Path pluginPath, + PluginDescriptor pluginDescriptor) { + return new PluginClassLoader(pluginManager, pluginDescriptor, + getClass().getClassLoader(), ClassLoadingStrategy.APD); + } + @Override public ClassLoader loadPlugin(Path pluginPath, PluginDescriptor pluginDescriptor) { - PluginClassLoader pluginClassLoader = - new PluginClassLoader(pluginManager, pluginDescriptor, - getClass().getClassLoader(), ClassLoadingStrategy.APD); - - loadClasses(pluginPath, pluginClassLoader); - loadJars(pluginPath, pluginClassLoader); - - return pluginClassLoader; + if (pluginProperties.getClassesDirectories() != null) { + for (String classesDirectory : + pluginProperties.getClassesDirectories()) { + pluginClasspath.addClassesDirectories(classesDirectory); + } + } + if (pluginProperties.getLibDirectories() != null) { + for (String libDirectory : + pluginProperties.getLibDirectories()) { + pluginClasspath.addJarsDirectories(libDirectory); + } + } + return super.loadPlugin(pluginPath, pluginDescriptor); } }, this::isDevelopment) .add(new JarPluginLoader(this) { diff --git a/src/main/java/run/halo/app/plugin/PluginProperties.java b/src/main/java/run/halo/app/plugin/PluginProperties.java index f621a577c..7e63b0b26 100644 --- a/src/main/java/run/halo/app/plugin/PluginProperties.java +++ b/src/main/java/run/halo/app/plugin/PluginProperties.java @@ -17,6 +17,7 @@ import org.springframework.boot.context.properties.ConfigurationProperties; @Data @ConfigurationProperties(prefix = "halo.plugin") public class PluginProperties { + public static final String GRADLE_LIBS_DIR = "build/libs"; /** * Auto start plugin when main app is ready. @@ -53,7 +54,7 @@ public class PluginProperties { /** * Extended Plugin Jar Directory. */ - private List libDirectories = new ArrayList<>(); + private List libDirectories = new ArrayList<>(List.of(GRADLE_LIBS_DIR)); /** * Runtime Mode:development/deployment. diff --git a/src/main/resources/application-dev.yaml b/src/main/resources/application-dev.yaml index b9390b993..173336b33 100644 --- a/src/main/resources/application-dev.yaml +++ b/src/main/resources/application-dev.yaml @@ -19,11 +19,6 @@ halo: super-admin-password: admin plugin: runtime-mode: development # development, deployment - classes-directories: - - "build/classes" - - "build/resources" - lib-directories: - - "libs" work-dir: ${user.home}/halo2-dev logging: level: