" />

关于

这个项目和上游 RuoYi-Vue-Plus 是什么关系,以及它能给你什么、不能给你什么。

和上游的关系

底座能力完全保留,业务交付方式被重做。

维度原版 RuoYi-Vue-Plus本项目
业务模块位置编译期在宿主 reactor 里独立插件工程,不在任何 <modules>
交付方式发版一个 jar应用包(清单 + jar + 前端产物 + 迁移脚本)
加载时机启动期,写死在 classpath运行期,每插件独立类加载器 + 子上下文
业务升级重启服务热加载
菜单与权限初始化 SQL 写 INSERT INTO sys_menu应用清单声明 → 幂等 upsert,复用 menu_id
表结构变更手工执行 SQL随包走的 migrations/*.sql,安装升级时执行
前端页面随宿主一起构建独立 ESM 远程产物,运行期按菜单加载
多客户交付分支 / 手工裁剪同一份平台代码 + 不同应用组合
包安全产物白名单 + 分离式签名校验

多租户、Sa-Token 鉴权、MyBatis-Plus、OSS、任务调度、工作流、代码生成、监控这些 底座能力以上游为准,本项目没有改动它们的语义。

什么情况下不要用它

诚实地讲,这套改造付出了复杂度。

适合

  • 一套代码服务多个客户,且客户之间功能组合不同
  • 需要不停机地给线上加功能或升级某个模块
  • 要做应用市场 / 插件生态,让第三方能上架
  • 想把「平台」和「业务」的边界在工程结构上固化下来

不适合

  • 一套系统服务一个客户、功能固定
  • 不需要后装 / 热升级 / 多形态交付
  • 团队规模很小、维护不了类加载器与签名这套机制

这种情况直接用上游 RuoYi-Vue-Plus 更省事 —— 插件化对你是纯粹的额外成本。

当前状态

数字来自各应用的 app.json 清单。

应用数量10 个(前后端一体 9 / 纯前端 1)
菜单规模496 条(页面 95 / 按钮权限 401)
平台版本RuoYi-Vue-Plus 5.6.2 / Spring Boot 3.5.15 / JDK 17+
前端Vue 3.5 / Vite 6.3 / Element Plus
已抽成应用的宿主模块quote / enterprise / member / pay / exam / im / social / mall(八个已完成)
数据生成时间2026-09-14

已知限制

这些是设计如此,不是 bug。

  • 迁移只做 up,不回滚 —— 要回退表结构请自己写一个"反向"的新脚本。
  • 已执行过的迁移脚本不能改 —— 摘要不一致直接拒绝执行,这是刻意的保护。
  • 应用装的菜单不能改路由 / 权限字段,也不能删;想隐藏请用「停用」。
  • 签名是单公钥模型 —— 与"开放第三方上架且什么都不改"目前是互斥的。
  • 目录远程读取不做缓存 —— 避免"刚上架却装到旧版本"这类难解释的问题。
  • 卸载默认不删数据 —— 「彻底删除」才删,且只删应用包声明过的表。
  • 目录服务没有单独裁剪的产物 —— 同一个 jar 用配置切换角色。

许可与致谢

MIT 协议开源。

本项目基于 MIT 协议开源。底座能力来自 Dromara RuoYi-Vue-Plus, 感谢上游作者与社区;应用市场的插件运行时、远程应用与签名机制是在其之上的改造。

文档站与官网同仓库维护:官网是纯静态产物(本目录), 文档站是 VitePress 工程(website/docs/)。