From d06078893e7c86b7bd53e70e2f23c1535bf2d129 Mon Sep 17 00:00:00 2001 From: will Date: Mon, 12 Dec 2022 10:24:22 +0800 Subject: [PATCH] Silent prompt when plugins fail to load in development mode (#2907) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit #### What type of PR is this? /kind improvement /area core #### What this PR does / why we need it: 在插件开发模式下加载插件失败时不抛出异常改为静默提示 #### Which issue(s) this PR fixes: A part of #2901 #### Special notes for your reviewer: how to test it? 1. 配置 `halo.plugin.fixed-plugin-path` 为一些不合法的插件项目路径不影响 Halo 正常启动,且有错误提示 2. 配置合法路径,插件能正确启动 #### Does this PR introduce a user-facing change? ```release-note 插件开发模式下无法被加载时改为静默提示不抛出异常 ``` --- .../run/halo/app/plugin/HaloPluginManager.java | 12 +++--------- .../app/plugin/PluginDevelopmentInitializer.java | 16 ++++++++++++++-- 2 files changed, 17 insertions(+), 11 deletions(-) diff --git a/src/main/java/run/halo/app/plugin/HaloPluginManager.java b/src/main/java/run/halo/app/plugin/HaloPluginManager.java index abcc50d004..fe45abf453 100644 --- a/src/main/java/run/halo/app/plugin/HaloPluginManager.java +++ b/src/main/java/run/halo/app/plugin/HaloPluginManager.java @@ -381,15 +381,9 @@ public void releaseAdditionalResources(String pluginId) { @Override protected PluginWrapper loadPluginFromPath(Path pluginPath) { - try { - PluginWrapper pluginWrapper = super.loadPluginFromPath(pluginPath); - rootApplicationContext.publishEvent(new HaloPluginLoadedEvent(this, pluginWrapper)); - return pluginWrapper; - } catch (PluginRuntimeException e) { - // ignore this - log.warn(e.getMessage(), e); - } - return null; + PluginWrapper pluginWrapper = super.loadPluginFromPath(pluginPath); + rootApplicationContext.publishEvent(new HaloPluginLoadedEvent(this, pluginWrapper)); + return pluginWrapper; } private void removePluginComponentsCache(String pluginId) { diff --git a/src/main/java/run/halo/app/plugin/PluginDevelopmentInitializer.java b/src/main/java/run/halo/app/plugin/PluginDevelopmentInitializer.java index 073068ebd2..47fc14f59c 100644 --- a/src/main/java/run/halo/app/plugin/PluginDevelopmentInitializer.java +++ b/src/main/java/run/halo/app/plugin/PluginDevelopmentInitializer.java @@ -1,6 +1,7 @@ package run.halo.app.plugin; import java.nio.file.Path; +import lombok.extern.slf4j.Slf4j; import org.pf4j.PluginWrapper; import org.springframework.boot.context.event.ApplicationReadyEvent; import org.springframework.context.ApplicationListener; @@ -13,6 +14,7 @@ * @author guqing * @since 2.0.0 */ +@Slf4j @Component public class PluginDevelopmentInitializer implements ApplicationListener { @@ -43,7 +45,17 @@ private void createFixedPluginIfNecessary(HaloPluginManager pluginManager) { if (idForPath(path) != null) { continue; } - String pluginId = pluginManager.loadPlugin(path); + + // for issue #2901 + String pluginId; + + try { + pluginId = pluginManager.loadPlugin(path); + } catch (Exception e) { + log.warn(e.getMessage(), e); + continue; + } + PluginWrapper pluginWrapper = pluginManager.getPlugin(pluginId); if (pluginWrapper == null) { continue; @@ -65,4 +77,4 @@ protected String idForPath(Path pluginPath) { } return null; } -} +} \ No newline at end of file