Skip to content

简介

插件功能可以在不修改后端主程序与前端项目的情况下,改变系统原有的功能或增加新的功能。

咸鱼云会通过合并注册插件内声明的Bean、注册插件信息、暴露插件内静态资源、声明配置项、声明自动加载的前端资源等方式实现后端与前端的功能拓展。

目前插件的加载方式为合并到同一个上下文类加载器中,后续会开发独立类加载器加载的方式。

配置说明

程序会读取 程序运行路径/ext/ 下的jar文件作为拓展插件来加载。 对sfc-ext项目执行package后,拓展jar包会在/release/ext-available/中生成,若有需要将其复制到程序运行路径/ext/即可。

插件配置参数

在config-properties.json中可声明插件的配置信息,会自动通过管理员后台可统一配置。具体配置说明待补充

插件包基础结构

├─plugin-info.json
├─config-properties.json
├─plugin-lib
│    ├─xxxx-1.0.0.jar
│    ├─xxxx-1.0.0.jar
│    └─xxxx-1.0.0.jar
└─static
    ├─ index.umd.js
    ├─ xxxx.css
    └─ xxx.jpg

各目录与文件说明:

  • plugin-info.json
    插件基本信息,如:插件名称、插件版本、作者、图标等信息。结构文档待补充。
  • plugin-lib
    插件依赖的第三方jar包
  • config-properties.json
    插件的配置项和配置菜单
  • static
    插件内需要暴露外部直接访问的静态资源文件

插件依赖机制

包含依赖

插件实现的功能可能需要依赖其他的jar包,这些依赖的jar包应该存放到拓展插件jar包内的plugin-lib中,系统在启动中会自动提取这些jar包并加载。 这些插件依赖会自动提取到ext/lib/{插件名称}/

依赖冲突

以下两种情况之一均会导致插件依赖出现冲突从而导致无法启动程序有:

  • 与其他插件依赖或内置基础依赖出现同名,但版本不同的依赖
  • 依赖中存在其他插件依赖或内置基础依赖中已经声明过的同名class文件

这时候需要根据控制台提示的冲突从插件jar包中删除这些插件依赖(即删除插件包plugin-lib目录下的资源)。

待优化

插件内可声明自身插件依赖的优先级与处理策略,从而实现在启动时出现冲突的情况下,采取拒绝启动、忽略加载、强制加载、排他加载、按版本号优先策略等。