快速开始
目标:从零把后端宿主和前端跑起来,然后装一个应用验证整条链路。 全程不需要重启后端。
0 · 环境要求
JDK / Maven 没加进 PATH 的话,每个新终端先设一次。
| 项 | 要求 | 说明 |
|---|---|---|
| JDK | 17+ | 根 pom 编译目标是 17 |
| Maven | 3.9+ | 仓库没有 Maven Wrapper,需要本机装 |
| Node.js | 20+ | engines 写的是 ≥18.18.0,按 22 验证 |
| MySQL | 8.x | 驱动 com.mysql.cj.jdbc.Driver |
| Redis | 6+ | 客户端是 Redisson |
$env:JAVA_HOME = "C:\Users\<you>\.jdks\corretto-17"
$mvn = "C:\path\to\maven\bin\mvn.cmd"
1 · 初始化数据库
按顺序导入 script/sql/ 下的脚本。
① script/sql/platform_init.sql 平台表与平台数据
② script/sql/update/app_market*.sql 应用市场表结构(按文件名顺序)
③ script/sql/app_catalog_seed.sql 应用目录种子
不要再用上游的 ry_vue_5.X.sql 做初始化 —— 它不是本仓库的种子数据。
应用的建表脚本不在这里,它们随应用包走、安装时自动执行。
2 · 编译并打包后端
改了后端代码必须 install,不是 compile。
# 全反应堆编译(根 pom 默认 skipTests=true)
& $mvn -B -q compile -DskipTests
# 打可运行 jar
& $mvn -pl ruoyi-admin -am -B install -DskipTests
只跑 mvn compile 不会更新 ruoyi-admin.jar ——
你启动的还是旧代码,然后会得出"我的改动没生效"的错误结论。
3 · 启动后端宿主
推荐用启动脚本:它会先清理上一版插件 jar,再启动。
# 默认:清理 + 启动
powershell -NoProfile -ExecutionPolicy Bypass -File scripts\start-host.ps1
# 其它用法
- Build 先重新打包再启动
- Port 8087 换端口
- NoPlugin 不加载插件(排查用)
-Dloader.path=... 的引号不能省 ——
PowerShell 会把它拆成 /path=plugins-dist,报
ClassNotFoundException。两个 -D 参数都要加引号。
工作目录必须是 RuoYi-Vue-Plus:plugin-dir 与
frontend-dir 都是相对路径。另外 application.yml 里的 profile
是硬编码的 prod,运行期切换只能靠 -Dspring.profiles.active=。
4 · 启动前端
dev server 在 80 端口。
cd plus-ui
npm install
npm run dev
dev server 会把 /remote-apps/* 映射到
plus-ui/app-market-dist/remote-apps ——
这正是后端落位远程应用前端产物的地方,所以后端的
app-market.deploy.frontend-dir 必须与它指向同一个物理目录。
5 · 登录
租户 000000 / 账号 admin / 密码 admin123。
上层环境前必须替换仓库里的开发凭据:数据库与 Redis 连接信息、Sa-Token JWT 密钥、
加解密公私钥、app-market.security.public-key(源码注释已写明是开发验证阶段生成的)、
以及前端 .env.* 里的接口地址。
6 · 装一个应用验证链路
在「应用市场」里选一个应用点安装,然后看任务中心。
第 3 步在第 4 步之前是刻意设计的:先改表结构、再切换代码。 「我的应用 → 应用任务」里有每一步的进度与日志,这是排查问题的第一站。
打包自己的应用
仓库里已有 10 个应用可以作为参考。
# 第一次:生成签名密钥(会建目录)
powershell -NoProfile -ExecutionPolicy Bypass -File plugins\package.ps1 -Keygen
# 打包 + 签名(脚本会自己构建前后端)
powershell -NoProfile -ExecutionPolicy Bypass -File plugins\package.ps1 `
-Plugin ruoyi-<name> -SigningKey plugins\keys\private.pem
宿主默认是 enforce 模式,未签名的包上传就会被拒。
发布时统一带 -SigningKey。