JAR 插件分册
本目录(在线文档路径 /mms-plugins/*)收录:JAR 插件入门、JAR 开发指南、JAR 插件路由协议,以及 mms-plus 仓库根下 Maven 聚合目录 mms-plugins/ 中各业务/示例插件的说明页,正文均在站点同一目录下,便于检索与交叉引用。
先读这句
下面 「插件一览」 帮你按名字找到文档;「通用约定」 用一张表说明 HOST_MVC 路径、插件参数、invoke 等——第一次接触建议先跟 JAR 插件入门 跑通示例,再回头查表。
适用读者
- 需要在管理端 插件市场 安装、配置或联调某一插件的运维与后端。
- 正在扩展其它业务插件、需要对照 runtimeMode、插件参数、权限码、HOST_MVC 路径 的开发者。
源码与产物位置
- 源码:mms-plus 下的
mms-plugins/<artifactId>/(与主后端mms/不同目录)。 - 安装:宿主
mms.plugin.enabled=true且磁盘布局符合约定;上传install的通常是带依赖的*-standalone.jar(因模块而异,见各插件分册)。
插件一览
| 分册 | 插件 ID(plugin.json) | 模式 | 摘要 |
|---|---|---|---|
基础工具插件(mms.plugin.c-base) | mms.plugin.c-base | HOST_MVC | SaaS/插件 URL 等只读约定;无必选依赖;瘦 JAR |
| C 端业务插件(按域) | mms.plugin.c-member 等 7 个 id(见分册表) | SPI_ONLY | v2.0.13 起七域独立 JAR;先装 c.member(含 base);须 standalone;可选依赖 c-base |
| 示例健康插件 | mms.plugin.sample-health | HOST_MVC | 联调宿主:健康探针、示例 Controller、PluginBeanRegistrar |
| 示例 SPI-only | mms.plugin.sample-spi | SPI_ONLY | 无 HTTP,演示 HostServices 与缓存 |
| 文档站合并 | mms.plugin.doc | SPI_ONLY | 将 mms-doc 后端合并进宿主进程;须 standalone |
| 系统运行时日志 | mms.plugin.syslog | HOST_MVC + 前端联邦 | 日志列举 / tail / SSE;可选 plugin-syslog-ui |
| 企业微信机器人 | mms.plugin.wechat-bot | HOST_MVC | Webhook 扇出、生命周期通知、反射发送能力 |
| DeepL 翻译 | mms.plugin.deepl | HOST_MVC | apiKey 插件参数、文本/HTML 翻译;须 standalone |
| Redis 可视化预览 | mms.plugin.redis-inspect | HOST_MVC | Lettuce 只读 SCAN/键详情;配置 redis.inspect |
| 数据源与结构运维 | mms.plugin.datasource | HOST_MVC | 契约 v5、受限 DDL、MySQL 逻辑备份/还原、定时备份 |
版本号以各 JAR 内 META-INF/mms/plugin.json 为准;上表仅作导航。
通用约定(速查)
- 对外 HTTP(HOST_MVC):路径形如
/plugin/{pluginId}/+ 插件内@PluginController映射;须登录,权限与StpUtil.checkPermission及 sys_function 登记一致(/plugin/**默认不排除 Sa-Token)。 - 插件参数:键规则
mms.plugin.{pluginId}.{suffix},在市场详情中编辑,落地 sys_config(单值长度受表字段限制,常见 255)。 - 对等调用:其它插件可通过
PluginRuntimeContext#tryInvokePeerPlugin调用目标插件MmsPlugin实现类的公有实例方法;亦可用运维POST /system/pluginHost/invoke。 - 健康检查:建议实现
PluginHealthContributor并登记 SPI;health()返回字符串表示 OK,业务不可用须 抛异常;细节见主仓.cursor/skills/mms-plugin/SKILL.md。
提供能力类插件:Demo 写法(统一约定)
各分册中 「Demo:引入插件」、「Demo:调用能力」 两节遵循下列模式,便于复制联调。
引入插件(运维向)
- 宿主:
application.yml中mms.plugin.enabled: true,配置mms.plugin.root-dir(或未配置时用默认目录);后端重启或POST /system/pluginHost/reload(需 super_admin,以实际控制台为准)。 - 产物:在
mms-plugins/<module>/执行mvn -DskipTests package;需 standalone 的模块必须使用*-standalone.jar上传(见各分册)。 - 安装:管理端 系统管理 → 插件市场:安装(上传 JAR)→ 库表登记与 激活版本 以界面为准 → 确认
GET /system/pluginHost/status中该插件为已加载。 - 权限:若分册提供
script/install.sql(或同目录其它 SQL),在库中执行并给角色分配对应plugin:*权限码。 - 插件参数:市场卡片 详情 中编辑后缀项(如
apiKey),保存后无需改 YAML(契约版本 ≥3 时走pluginSysConfig)。
调用能力(三种入口)
| 方式 | 适用场景 | 要点 |
|---|---|---|
| HTTP(HOST_MVC) | 前端、Postman、cron 调网关 | 路径 {API根}/plugin/{pluginId}/...;请求头带 登录令牌(名称以 sa-token 配置为准,常见为 Authorization)。 |
| 对等反射 | 其它 JAR 插件在同一进程内调用的业务方法 | 在 MmsPlugin.onLoad 所获 PluginRuntimeContext 上调用 tryInvokePeerPlugin(pluginId, methodName, args...);方法须为 MmsPlugin 实现类的 public 实例方法(含继承可见者以反射实现为准)。 |
| 运维 invoke | 排障、脚本、不写插件代码 | POST {API根}/system/pluginHost/invoke,body 为 JSON:pluginId、可选 version、methodName、args(数组,类型由 Jackson 转换)。需 super_admin。 |
invoke 请求体示例(运维)
json
{
"pluginId": "mms.plugin.deepl",
"methodName": "translateText",
"args": ["Hello", "ZH"]
}version 省略时,在仅加载单一版本的规范下由宿主解析;多版本并存时请传 plugin.json 的 version 字符串(与市场对齐)。
延伸阅读
文档修订
本站结构化修订记录见 日志 顶栏「文档修订」;单页页脚可为 Git lastUpdated。
