Skip to content

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-basemms.plugin.c-baseHOST_MVCSaaS/插件 URL 等只读约定;无必选依赖;瘦 JAR
C 端业务插件(按域)mms.plugin.c-member 等 7 个 id(见分册表)SPI_ONLYv2.0.13 起七域独立 JAR;先装 c.member(含 base)须 standalone可选依赖 c-base
示例健康插件mms.plugin.sample-healthHOST_MVC联调宿主:健康探针、示例 Controller、PluginBeanRegistrar
示例 SPI-onlymms.plugin.sample-spiSPI_ONLY无 HTTP,演示 HostServices 与缓存
文档站合并mms.plugin.docSPI_ONLYmms-doc 后端合并进宿主进程;须 standalone
系统运行时日志mms.plugin.syslogHOST_MVC + 前端联邦日志列举 / tail / SSE;可选 plugin-syslog-ui
企业微信机器人mms.plugin.wechat-botHOST_MVCWebhook 扇出、生命周期通知、反射发送能力
DeepL 翻译mms.plugin.deeplHOST_MVCapiKey 插件参数、文本/HTML 翻译;须 standalone
Redis 可视化预览mms.plugin.redis-inspectHOST_MVCLettuce 只读 SCAN/键详情;配置 redis.inspect
数据源与结构运维mms.plugin.datasourceHOST_MVC契约 v5、受限 DDL、MySQL 逻辑备份/还原、定时备份

版本号以各 JAR 内 META-INF/mms/plugin.json 为准;上表仅作导航。

通用约定(速查)

  • 对外 HTTP(HOST_MVC):路径形如 /plugin/{pluginId}/ + 插件内 @PluginController 映射;须登录,权限与 StpUtil.checkPermissionsys_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:调用能力」 两节遵循下列模式,便于复制联调。

引入插件(运维向)

  1. 宿主application.ymlmms.plugin.enabled: true,配置 mms.plugin.root-dir(或未配置时用默认目录);后端重启或 POST /system/pluginHost/reload(需 super_admin,以实际控制台为准)。
  2. 产物:在 mms-plugins/<module>/ 执行 mvn -DskipTests package;需 standalone 的模块必须使用 *-standalone.jar 上传(见各分册)。
  3. 安装:管理端 系统管理 → 插件市场安装(上传 JAR)→ 库表登记与 激活版本 以界面为准 → 确认 GET /system/pluginHost/status 中该插件为已加载。
  4. 权限:若分册提供 script/install.sql(或同目录其它 SQL),在库中执行并给角色分配对应 plugin:* 权限码。
  5. 插件参数:市场卡片 详情 中编辑后缀项(如 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、可选 versionmethodNameargs(数组,类型由 Jackson 转换)。需 super_admin
invoke 请求体示例(运维)
json
{
  "pluginId": "mms.plugin.deepl",
  "methodName": "translateText",
  "args": ["Hello", "ZH"]
}

version 省略时,在仅加载单一版本的规范下由宿主解析;多版本并存时请传 plugin.json 的 version 字符串(与市场对齐)。

延伸阅读

文档修订

本站结构化修订记录见 日志 顶栏「文档修订」;单页页脚可为 Git lastUpdated

Released under the MIT License.