public interface Plugin {
public void load(PluginConfiguration pluginConfiguration);
public void run();
public void unload();
public JComponent getConfigurationPage();
}
然后插件作者应该将他们的插件捆绑到 JAR 文件中。您的应用程序打开 JAR 文件,然后可以使用来自 JAR 清单的属性或 JAR 文件中所有文件的列表来查找实现您的 Plugin 接口的类。实例化这个类,插件就准备好了。
激励我的基本想法是尽可能简单地构建 Java 应用程序,不要将 Web 应用程序、桌面应用程序或 applet/JWS 应用程序(当然这还不包括 UI)作为核心功能。
我在构建这个项目时心里有几个目标:
无论你是构建一个 web 应用程序还是一个桌面应用程序,你都应该以相同的方式启动这个应用程序,一个普通的 main 方法,没有花哨的 web.xml 声明(并不是说我反对使用标准的 web 描述符,但是它不适合一个插件系统,你可以添加“ servlets”——我称之为 RequestHandler (s)——随你的意愿动态)。
很容易在“扩展点”周围插入“扩展”——这是来自 Eclipse 的一些东西,但是是一种不同的方法。
自部署,因为所有的插件都是注册的(XML 文件) ,所以应用程序必须是独立于构建系统的自部署-当然有一个 Ant 任务和一个 Maven MOJO,它们是与我们的世界的链接,但是最终它调用应用程序并指示它在一个特定的位置自部署自己。
它可以从存储库(包括 Maven 1和2存储库)下载代码,所以只要你能访问存储库,你的应用程序就可以作为一个单独的小罐子部署(有时很有用,基本上这提供了自动更新的支持-难道你不喜欢你的 web 应用程序通知你有一个更新的版本,它已经下载了,它只需要你的许可就可以安装吗?我知道我喜欢那样)。