迁移项目到 RuoYi-Vue springboot2 基线
This commit is contained in:
43
doc/2026-04-13-local-tomcat-remote-tongweb-backend-plan.md
Normal file
43
doc/2026-04-13-local-tomcat-remote-tongweb-backend-plan.md
Normal file
@@ -0,0 +1,43 @@
|
||||
# 本地 Tomcat 与 TongWeb 打包并存后端实施计划
|
||||
|
||||
## 目标
|
||||
|
||||
- 恢复本地 `jar + 内嵌 Tomcat` 启动链路
|
||||
- 保留服务器 `war + TongWeb` 部署链路
|
||||
- 一次 `mvn package` 同时产出 `ruoyi-admin.jar` 和 `ruoyi-admin.war`
|
||||
|
||||
## 改动范围
|
||||
|
||||
- Maven 打包配置
|
||||
- 后端启动与部署脚本
|
||||
- 脚本测试
|
||||
- 相关运行文档和实施记录
|
||||
|
||||
## 实施步骤
|
||||
|
||||
1. 先修改脚本测试,重新定义目标行为
|
||||
- 本地测试脚本期望 `restart_java_backend.sh` 使用 `java -jar`
|
||||
- 生产测试脚本继续期望 TongWeb 使用 `war`
|
||||
2. 调整 Maven 打包配置
|
||||
- `ruoyi-admin` 恢复主产物 `jar`
|
||||
- 增加附加 `war` 产物
|
||||
- 恢复本地运行所需的内嵌 Tomcat 依赖
|
||||
3. 调整脚本
|
||||
- 本地脚本改回管理 `ruoyi-admin.jar`
|
||||
- 生产脚本继续管理 `ruoyi-admin.war`
|
||||
4. 更新文档
|
||||
- 更新运行说明
|
||||
- 新增本次实施记录
|
||||
5. 执行验证
|
||||
|
||||
## 验证要求
|
||||
|
||||
- `sh bin/restart_java_backend_test.sh`
|
||||
- `sh bin/prod/restart_java_test.sh`
|
||||
- `sh bin/prod/deploy_from_package_test.sh`
|
||||
- `sh -n bin/restart_java_backend.sh`
|
||||
- `sh -n bin/prod/restart_java.sh`
|
||||
- `sh -n bin/prod/deploy_from_package.sh`
|
||||
- `mvn -pl ruoyi-admin -am package -DskipTests`
|
||||
- 确认 `ruoyi-admin/target/ruoyi-admin.jar`
|
||||
- 确认 `ruoyi-admin/target/ruoyi-admin.war`
|
||||
147
doc/2026-04-13-local-tomcat-remote-tongweb-design.md
Normal file
147
doc/2026-04-13-local-tomcat-remote-tongweb-design.md
Normal file
@@ -0,0 +1,147 @@
|
||||
# 本地 Tomcat 运行与 TongWeb 打包并存设计
|
||||
|
||||
## 背景
|
||||
|
||||
当前项目已经被调整为统一的 TongWeb `war` 交付模式,这会导致本地开发时也必须围绕 TongWeb 组织启动流程,不符合当前开发诉求。
|
||||
|
||||
本次目标是同时保留两条链路:
|
||||
|
||||
- 本地开发运行继续使用内嵌 Tomcat
|
||||
- 打包交付继续支持服务器上的 TongWeb
|
||||
|
||||
并且要求一次 `mvn package` 同时产出本地运行所需的 `jar` 和服务器部署所需的 `war`。
|
||||
|
||||
## 目标
|
||||
|
||||
- 保留 `IDEA`、`mvn spring-boot:run`、本地脚本直启后端的开发体验
|
||||
- 保留面向 TongWeb 的 `war` 交付方式
|
||||
- `mvn package` 后同时得到 `ruoyi-admin.jar` 与 `ruoyi-admin.war`
|
||||
- 本地不强依赖安装 TongWeb
|
||||
- 服务器部署脚本继续只消费 `war`
|
||||
|
||||
## 非目标
|
||||
|
||||
- 不新增第二个后端启动模块
|
||||
- 不拆分额外的部署工程
|
||||
- 不修改前端构建方式
|
||||
- 不引入“兼容模式”“降级模式”之类额外分支逻辑
|
||||
|
||||
## 设计方案
|
||||
|
||||
### 1. 构建产物设计
|
||||
|
||||
`ruoyi-admin` 恢复为以 `jar` 为主产物的 Spring Boot 应用,用于本地开发运行。
|
||||
|
||||
在同一个 Maven 模块中补充 `war` 打包步骤,使一次 `mvn package` 后同时得到:
|
||||
|
||||
- `ruoyi-admin/target/ruoyi-admin.jar`
|
||||
- `ruoyi-admin/target/ruoyi-admin.war`
|
||||
|
||||
这样本地和服务器都从同一套源码构建,但消费不同产物:
|
||||
|
||||
- 本地消费 `jar`
|
||||
- 服务器消费 `war`
|
||||
|
||||
### 2. 依赖设计
|
||||
|
||||
为了保证本地可继续走内嵌 Tomcat:
|
||||
|
||||
- 恢复 Web 模块中的内嵌 Tomcat 依赖链
|
||||
- 保持 `spring-boot:run` 与 `java -jar` 均可正常工作
|
||||
|
||||
为了保证 TongWeb 外部容器部署:
|
||||
|
||||
- 打出的 `war` 不能把容器自身实现错误打包成部署冲突形式
|
||||
- `Servlet API` 继续按外部容器提供的思路处理
|
||||
|
||||
本质上,本地运行和 TongWeb 部署共享同一套业务代码,但运行容器不同。
|
||||
|
||||
### 3. 启动脚本设计
|
||||
|
||||
#### 本地脚本
|
||||
|
||||
`bin/restart_java_backend.sh` 恢复为本地开发脚本:
|
||||
|
||||
- 执行 Maven 打包
|
||||
- 使用 `ruoyi-admin.jar`
|
||||
- 通过 `java -jar` 管理本地后端进程
|
||||
|
||||
这条链路不再依赖 `TONGWEB_HOME`。
|
||||
|
||||
#### 生产脚本
|
||||
|
||||
以下脚本保持 TongWeb 交付模型:
|
||||
|
||||
- `bin/prod/restart_java.sh`
|
||||
- `bin/prod/deploy_from_package.sh`
|
||||
- `bin/prod/deploy_release.sh`
|
||||
|
||||
它们继续只处理 `ruoyi-admin.war`,不回退到 `jar`。
|
||||
|
||||
### 4. 本地与服务器联调设计
|
||||
|
||||
本地开发时不要求本机安装 TongWeb。
|
||||
|
||||
如果需要验证 TongWeb 运行环境,只通过两种方式完成:
|
||||
|
||||
- 打包后部署到服务器 TongWeb 验证
|
||||
- 本地系统直接调用服务器上已部署的 TongWeb 地址联调
|
||||
|
||||
这意味着:
|
||||
|
||||
- 本地开发链路只围绕 `jar + Tomcat`
|
||||
- 服务器部署链路只围绕 `war + TongWeb`
|
||||
|
||||
## 验证方案
|
||||
|
||||
### 构建验证
|
||||
|
||||
执行:
|
||||
|
||||
```sh
|
||||
mvn -pl ruoyi-admin -am package -DskipTests
|
||||
```
|
||||
|
||||
确认同时存在:
|
||||
|
||||
- `ruoyi-admin/target/ruoyi-admin.jar`
|
||||
- `ruoyi-admin/target/ruoyi-admin.war`
|
||||
|
||||
### 本地运行验证
|
||||
|
||||
执行:
|
||||
|
||||
```sh
|
||||
sh bin/restart_java_backend.sh restart
|
||||
```
|
||||
|
||||
确认本地以 `java -jar` 正常运行。
|
||||
|
||||
### TongWeb 脚本验证
|
||||
|
||||
执行:
|
||||
|
||||
```sh
|
||||
sh bin/prod/restart_java_test.sh
|
||||
sh bin/prod/deploy_from_package_test.sh
|
||||
```
|
||||
|
||||
确认 TongWeb 侧仍围绕 `war` 工作。
|
||||
|
||||
## 影响范围
|
||||
|
||||
- `ruoyi-admin` Maven 打包配置
|
||||
- Web 相关模块的容器依赖声明
|
||||
- 本地后端脚本
|
||||
- 生产 TongWeb 脚本
|
||||
- 运行文档与实施记录
|
||||
|
||||
## 结论
|
||||
|
||||
本方案采用最短路径实现“双产物、双运行链路并存”:
|
||||
|
||||
- 本地运行继续走内嵌 Tomcat
|
||||
- 服务器部署继续走 TongWeb
|
||||
- 一次打包同时产出 `jar` 与 `war`
|
||||
|
||||
在不新增模块、不扩散复杂度的前提下,满足开发与部署两端的实际需要。
|
||||
39
doc/2026-04-13-tongweb-replace-tomcat-backend-plan.md
Normal file
39
doc/2026-04-13-tongweb-replace-tomcat-backend-plan.md
Normal file
@@ -0,0 +1,39 @@
|
||||
# 东方通替换 Tomcat 后端实施计划
|
||||
|
||||
## 目标
|
||||
|
||||
- 将后端交付形态从内嵌 Tomcat 的 `jar` 调整为部署到东方通 TongWeb 的 `war`
|
||||
- 清理当前发布链路中围绕 `java -jar` / `ruoyi-admin.jar` 的脚本约定
|
||||
- 保持现有前端发布方式和 Nginx 入口不变,后端仍沿用 `63310` 作为反向代理目标端口
|
||||
|
||||
## 改动范围
|
||||
|
||||
- Maven 构建
|
||||
- 调整 `ruoyi-admin` 打包类型为 `war`
|
||||
- 去除模块链路中的嵌入式 Tomcat 打包依赖
|
||||
- 明确 Servlet API 由外部容器提供
|
||||
- 部署脚本
|
||||
- 将生产部署脚本中的后端产物从 `ruoyi-admin.jar` 切换为 `ruoyi-admin.war`
|
||||
- 将生产重启脚本从 Java 进程启停改为 TongWeb 容器启停与 `war` 发布
|
||||
- 调整本地后端重启脚本,使其面向 TongWeb 进行构建和部署
|
||||
- 运行文档
|
||||
- 更新本地安装手册中的后端环境说明,改为 TongWeb
|
||||
- 新增本次改动实施记录
|
||||
|
||||
## 实施步骤
|
||||
|
||||
1. 先修改现有脚本测试,明确新的 `war + TongWeb` 约束
|
||||
2. 调整 Maven 配置,产出 `ruoyi-admin.war`
|
||||
3. 修改生产部署脚本和本地重启脚本
|
||||
4. 更新运行文档与实施记录
|
||||
5. 执行脚本测试、语法校验和 Maven 打包验证
|
||||
|
||||
## 验证要求
|
||||
|
||||
- `mvn -pl ruoyi-admin -am clean package -DskipTests` 成功,且产物为 `ruoyi-admin.war`
|
||||
- `sh bin/prod/restart_java_test.sh` 成功
|
||||
- `sh bin/prod/deploy_from_package_test.sh` 成功
|
||||
- `sh bin/restart_java_backend_test.sh` 成功
|
||||
- `sh -n bin/prod/restart_java.sh`
|
||||
- `sh -n bin/prod/deploy_from_package.sh`
|
||||
- `sh -n bin/restart_java_backend.sh`
|
||||
41
doc/2026-04-14-ruoyi-vue-springboot2-backend-plan.md
Normal file
41
doc/2026-04-14-ruoyi-vue-springboot2-backend-plan.md
Normal file
@@ -0,0 +1,41 @@
|
||||
# RuoYi-Vue springboot2 后端迁移实施计划
|
||||
|
||||
## 目标
|
||||
|
||||
以上游 `RuoYi-Vue/springboot2` 为后端框架基线,将当前项目的后端框架层整体回退并重对齐到 Spring Boot 2 / Java 8,同时恢复 `ruoyi-loan-pricing` 业务模块和管理端业务接入配置。
|
||||
|
||||
## 范围
|
||||
|
||||
- 根 `pom.xml`
|
||||
- `ruoyi-admin`
|
||||
- `ruoyi-common`
|
||||
- `ruoyi-framework`
|
||||
- `ruoyi-generator`
|
||||
- `ruoyi-quartz`
|
||||
- `ruoyi-system`
|
||||
- `ruoyi-loan-pricing`
|
||||
- `sql`
|
||||
|
||||
## 执行步骤
|
||||
|
||||
1. 备份当前后端业务模块与业务配置
|
||||
2. 用上游 `springboot2` 覆盖根 POM 和基础后端模块
|
||||
3. 恢复 `ruoyi-loan-pricing` 模块目录
|
||||
4. 在根 POM 与 `ruoyi-admin/pom.xml` 中重新挂载 `ruoyi-loan-pricing`
|
||||
5. 恢复 `ruoyi-admin/src/main/resources` 中的 `loan-pricing` 业务配置
|
||||
6. 检查并修正 `ruoyi-loan-pricing` 中不兼容 Spring Boot 2 的依赖、注解和包引用
|
||||
7. 校正 Mapper、资源文件和测试依赖,保证模块能参与 Maven 聚合构建
|
||||
8. 保留并整理业务 SQL 脚本
|
||||
9. 在 Java 8 环境下执行后端编译与关键测试
|
||||
|
||||
## 验证要求
|
||||
|
||||
- `mvn -pl ruoyi-admin -am test` 至少能够完成依赖解析和关键模块测试
|
||||
- `mvn -pl ruoyi-admin -am package -DskipTests` 能通过
|
||||
- `ruoyi-loan-pricing` 模块可被 `ruoyi-admin` 正常引用
|
||||
|
||||
## 注意事项
|
||||
|
||||
- 不保留 Spring Boot 3 / Java 17 双配置
|
||||
- 不引入兼容层或过渡层
|
||||
- 若业务模块使用了 Boot 3 专属依赖,直接改为 Boot 2 可运行实现
|
||||
37
doc/2026-04-14-ruoyi-vue-springboot2-frontend-plan.md
Normal file
37
doc/2026-04-14-ruoyi-vue-springboot2-frontend-plan.md
Normal file
@@ -0,0 +1,37 @@
|
||||
# RuoYi-Vue springboot2 前端迁移实施计划
|
||||
|
||||
## 目标
|
||||
|
||||
以上游 `RuoYi-Vue/springboot2` 为前端基线,将当前项目前端整体回退并重对齐到上游 `ruoyi-ui`,然后恢复 `loanPricing` 业务页面、接口调用、路由与相关依赖。
|
||||
|
||||
## 范围
|
||||
|
||||
- `ruoyi-ui/package.json`
|
||||
- `ruoyi-ui/src`
|
||||
- `ruoyi-ui/public`
|
||||
- `ruoyi-ui/build`
|
||||
- `ruoyi-ui/tests`
|
||||
|
||||
## 执行步骤
|
||||
|
||||
1. 备份当前 `loanPricing` 页面、接口文件、路由改动和业务测试脚本
|
||||
2. 用上游 `springboot2` 的 `ruoyi-ui` 覆盖当前前端框架层
|
||||
3. 恢复 `src/views/loanPricing` 页面目录
|
||||
4. 恢复 `src/api/loanPricing` 接口文件
|
||||
5. 将业务路由重新挂回 `src/router/index.js`
|
||||
6. 恢复业务所需的前端依赖与测试脚本
|
||||
7. 用 `nvm` 切换到合适的 Node 版本后重新安装依赖
|
||||
8. 执行前端构建与页面联调验证
|
||||
|
||||
## 验证要求
|
||||
|
||||
- `npm install` 成功
|
||||
- `npm run build:prod` 成功
|
||||
- `loanPricing` 页面路由可访问
|
||||
- 页面基础交互和接口调用链路未丢失
|
||||
|
||||
## 注意事项
|
||||
|
||||
- 前端直接以 `springboot2` 上游为准,不保留当前非业务性的历史前端定制
|
||||
- Node 版本必须通过 `nvm` 控制
|
||||
- 测试完成后要关闭前端调试进程
|
||||
120
doc/2026-04-14-ruoyi-vue-springboot2-migration-design.md
Normal file
120
doc/2026-04-14-ruoyi-vue-springboot2-migration-design.md
Normal file
@@ -0,0 +1,120 @@
|
||||
# RuoYi-Vue springboot2 基线迁移设计
|
||||
|
||||
## 1. 目标
|
||||
|
||||
本次迁移以上游 `https://gitee.com/y_project/RuoYi-Vue/tree/springboot2` 为唯一框架基线,先将当前仓库整体回退并重对齐到该基线,再迁回现有业务模块与业务页面,最终形成一个“框架层跟随上游、业务层保留现状”的项目结构。
|
||||
|
||||
本次迁移不采用兼容层、补丁层或双栈并存方案,不保留 Spring Boot 3 / Java 17 的框架实现。
|
||||
|
||||
## 2. 现状与目标差异
|
||||
|
||||
当前仓库已经是 RuoYi 多模块工程,但后端已升级到 `Spring Boot 3.5.x`、`Java 17`,并引入了以下业务定制:
|
||||
|
||||
- 后端业务模块:`ruoyi-loan-pricing`
|
||||
- 前端业务页面:`ruoyi-ui/src/views/loanPricing`
|
||||
- 前端业务接口:`ruoyi-ui/src/api/loanPricing`
|
||||
- 管理端业务接入:`ruoyi-admin` 中的业务依赖与配置
|
||||
- 业务 SQL:`sql/loan_pricing_*`、`sql/model_*`、`sql/loan_pricing_menu.sql`
|
||||
|
||||
目标上游 `springboot2` 分支采用:
|
||||
|
||||
- `RuoYi-Vue 3.9.2`
|
||||
- `Spring Boot 2.5.15`
|
||||
- `Java 8`
|
||||
- `Vue 2 + Element UI`
|
||||
|
||||
因此本次迁移的本质是:先将框架层彻底切回 Spring Boot 2 基线,再把利率定价业务重新挂载到新的基线上。
|
||||
|
||||
## 3. 迁移范围
|
||||
|
||||
### 3.1 框架层
|
||||
|
||||
以下内容以上游 `springboot2` 版本为准:
|
||||
|
||||
- 根目录框架文件与脚本
|
||||
- 根 `pom.xml`
|
||||
- `ruoyi-admin`
|
||||
- `ruoyi-common`
|
||||
- `ruoyi-framework`
|
||||
- `ruoyi-generator`
|
||||
- `ruoyi-quartz`
|
||||
- `ruoyi-system`
|
||||
- `ruoyi-ui`
|
||||
- 上游自带 `sql` 基础脚本
|
||||
|
||||
### 3.2 业务层
|
||||
|
||||
以下内容需要从当前仓库迁回到新基线:
|
||||
|
||||
- `ruoyi-loan-pricing` 全模块
|
||||
- `ruoyi-admin` 中与 `loan-pricing` 相关的业务配置、业务依赖
|
||||
- `ruoyi-ui/src/views/loanPricing` 页面
|
||||
- `ruoyi-ui/src/api/loanPricing` 接口文件
|
||||
- `ruoyi-ui/src/router/index.js` 中的业务路由
|
||||
- 业务 SQL、部署脚本、项目文档
|
||||
|
||||
## 4. 实施策略
|
||||
|
||||
### 4.1 基线覆盖策略
|
||||
|
||||
采用“上游覆盖 + 业务回贴”模式:
|
||||
|
||||
1. 先备份当前业务目录与业务配置
|
||||
2. 将上游 `springboot2` 内容覆盖到当前仓库
|
||||
3. 恢复业务模块、业务页面、业务配置和业务 SQL
|
||||
4. 处理 Spring Boot 2 下的编译和运行差异
|
||||
|
||||
### 4.2 后端回贴策略
|
||||
|
||||
后端只保留一套 Spring Boot 2 实现,不额外保留 Spring Boot 3 兼容写法。若 `ruoyi-loan-pricing` 内存在 Boot 3 / Jakarta / SpringDoc 相关依赖或 API,则直接改回 Boot 2 可运行写法。
|
||||
|
||||
### 4.3 前端回贴策略
|
||||
|
||||
前端以 `springboot2` 上游 `ruoyi-ui` 为基础,回贴 `loanPricing` 页面、接口调用、路由和必要依赖;不保留与当前业务无关的历史定制。
|
||||
|
||||
## 5. 风险点与处理原则
|
||||
|
||||
### 5.1 框架依赖回退风险
|
||||
|
||||
风险:
|
||||
|
||||
- `springdoc`、`jakarta.*`、Boot 3 专用依赖不兼容 Boot 2
|
||||
- 测试依赖、插件版本、JDK 版本需要一并回退
|
||||
|
||||
处理原则:
|
||||
|
||||
- 以 Boot 2 上游依赖为准
|
||||
- 业务模块仅保留完成业务所必需的依赖
|
||||
|
||||
### 5.2 业务接入点遗漏风险
|
||||
|
||||
风险:
|
||||
|
||||
- `ruoyi-admin` 配置遗漏
|
||||
- 前端路由、菜单、接口路径遗漏
|
||||
- SQL 脚本与权限菜单脚本遗漏
|
||||
|
||||
处理原则:
|
||||
|
||||
- 逐类枚举迁移对象
|
||||
- 迁移后通过编译、页面访问、接口调用进行闭环验证
|
||||
|
||||
## 6. 验证标准
|
||||
|
||||
迁移完成后至少满足以下条件:
|
||||
|
||||
- Maven 多模块在 Spring Boot 2 / Java 8 环境下可编译
|
||||
- `ruoyi-admin` 可启动
|
||||
- `ruoyi-ui` 在指定 Node 版本下可安装并构建
|
||||
- `loanPricing` 页面路由可访问
|
||||
- 利率定价相关接口类与 Mapper 可通过编译
|
||||
- 业务 SQL 与菜单脚本仍保留在仓库内
|
||||
|
||||
## 7. 产出物
|
||||
|
||||
本次任务最终需产出:
|
||||
|
||||
- 本设计文档
|
||||
- 后端实施计划文档
|
||||
- 前端实施计划文档
|
||||
- 迁移实施记录文档
|
||||
@@ -0,0 +1,34 @@
|
||||
# 本地 Tomcat 与 TongWeb 双产物实施记录
|
||||
|
||||
## 本次改动
|
||||
|
||||
- 将 `ruoyi-admin` 的主打包方式从 `war` 恢复为 `jar`
|
||||
- 恢复 `spring-boot-maven-plugin` 的 `repackage`,保证本地可直接运行 `ruoyi-admin.jar`
|
||||
- 在 `ruoyi-admin` 中增加附加 `war` 打包步骤,使 `mvn package` 同时产出:
|
||||
- `ruoyi-admin.jar`
|
||||
- `ruoyi-admin.war`
|
||||
- 在 `war` 打包中排除内嵌 Tomcat 相关 jar,避免 TongWeb 部署时容器冲突
|
||||
- 将 `bin/restart_java_backend.sh` 恢复为本地 `java -jar` 启动链路
|
||||
- 保持 `bin/prod/restart_java.sh`、`bin/prod/deploy_from_package.sh` 继续消费 `ruoyi-admin.war`
|
||||
- 更新 `bin/run.bat`,恢复为本地 `jar` 启动入口
|
||||
- 新增设计文档 `doc/2026-04-13-local-tomcat-remote-tongweb-design.md`
|
||||
- 新增实施计划 `doc/2026-04-13-local-tomcat-remote-tongweb-backend-plan.md`
|
||||
|
||||
## 验证结果
|
||||
|
||||
- 已执行 `sh bin/restart_java_backend_test.sh`
|
||||
- 已执行 `sh bin/prod/restart_java_test.sh`
|
||||
- 已执行 `sh bin/prod/deploy_from_package_test.sh`
|
||||
- 已执行 `sh -n bin/restart_java_backend.sh`
|
||||
- 已执行 `sh -n bin/prod/restart_java.sh`
|
||||
- 已执行 `sh -n bin/prod/deploy_from_package.sh`
|
||||
- 已执行 `mvn -pl ruoyi-admin -am clean package -DskipTests`
|
||||
- 已确认产物:
|
||||
- `ruoyi-admin/target/ruoyi-admin.jar`
|
||||
- `ruoyi-admin/target/ruoyi-admin.war`
|
||||
|
||||
## 结果说明
|
||||
|
||||
- 本地开发运行继续使用内嵌 Tomcat,不要求本机安装 TongWeb
|
||||
- 服务器部署继续使用 TongWeb,只消费 `war`
|
||||
- 一次打包即可同时得到本地运行产物和 TongWeb 部署产物
|
||||
@@ -0,0 +1,25 @@
|
||||
# Tomcat 替换为东方通实施记录
|
||||
|
||||
## 本次改动
|
||||
|
||||
- 将 `ruoyi-admin` 打包方式从 `jar` 调整为 `war`
|
||||
- 在 `ruoyi-admin` 中显式声明 `spring-boot-starter-tomcat` 为 `provided`
|
||||
- 在 `ruoyi-framework`、`ruoyi-loan-pricing` 中排除 `spring-boot-starter-web` 传递进来的嵌入式 Tomcat
|
||||
- 将 `ruoyi-common` 中的 `jakarta.servlet-api` 调整为 `provided`
|
||||
- 删除 `application-dev.yml`、`application-uat.yml`、`application-pro.yml` 中仅对内嵌 Tomcat 生效的 `server.tomcat` 配置
|
||||
- 将 `bin/prod/restart_java.sh` 从 `java -jar` 启停改为 TongWeb 启停与 `war` 同步
|
||||
- 将 `bin/prod/deploy_from_package.sh`、`bin/prod/deploy_release.sh` 的后端交付物从 `ruoyi-admin.jar` 改为 `ruoyi-admin.war`
|
||||
- 将 `bin/restart_java_backend.sh` 改为本地构建 `war` 并发布到 TongWeb
|
||||
- 更新 `deploy/2026-03-31-local-nginx-java-install-manual.md`,将后端运行环境说明改为 TongWeb
|
||||
- 新增后端实施计划 `doc/2026-04-13-tongweb-replace-tomcat-backend-plan.md`
|
||||
|
||||
## 验证结果
|
||||
|
||||
- 已执行 `sh bin/prod/restart_java_test.sh`
|
||||
- 已执行 `sh bin/prod/deploy_from_package_test.sh`
|
||||
- 已执行 `sh bin/restart_java_backend_test.sh`
|
||||
|
||||
## 说明
|
||||
|
||||
- 本次替换按当前项目 `Spring Boot 3 + Jakarta Servlet` 路线落地,要求实际使用的东方通版本能够承载 Jakarta 体系应用
|
||||
- Nginx 入口和反向代理端口保持不变,仍通过 `63310` 转发到后端容器
|
||||
@@ -0,0 +1,105 @@
|
||||
# RuoYi-Vue springboot2 基线迁移实施记录
|
||||
|
||||
## 本次完成内容
|
||||
|
||||
- 以 `RuoYi-Vue/springboot2` 为基线覆盖当前仓库的框架层:
|
||||
- 根 `pom.xml`
|
||||
- `ruoyi-admin`
|
||||
- `ruoyi-common`
|
||||
- `ruoyi-framework`
|
||||
- `ruoyi-generator`
|
||||
- `ruoyi-quartz`
|
||||
- `ruoyi-system`
|
||||
- `ruoyi-ui`
|
||||
- `sql` 基础脚本
|
||||
- 恢复并接回业务模块与业务页面:
|
||||
- `ruoyi-loan-pricing`
|
||||
- `ruoyi-ui/src/views/loanPricing`
|
||||
- `ruoyi-ui/src/api/loanPricing`
|
||||
- `ruoyi-ui/src/router/index.js` 中的业务路由
|
||||
- `ruoyi-admin` 中的业务配置
|
||||
- 将 `ruoyi-loan-pricing` 从 Boot 3 / Java 17 写法回退到 Boot 2 / Java 8 可编译形态:
|
||||
- 移除 `springdoc` 注解和依赖
|
||||
- 将 `jakarta.*` 改回 `javax.*`
|
||||
- 将 `String.repeat` 改为 Java 8 兼容实现
|
||||
- 将模型调用改为模块内 `RestTemplate + form-urlencoded`
|
||||
- 补回当前项目的“无 Redis”本地缓存实现:
|
||||
- `InMemoryCacheEntry`
|
||||
- `InMemoryCacheStats`
|
||||
- `InMemoryCacheStore`
|
||||
- 本地缓存版 `RedisCache`
|
||||
- 本地缓存版 `CacheController`
|
||||
- 调整前端业务依赖与脚本:
|
||||
- 恢复 `crypto-js`
|
||||
- 恢复 `splitpanes`
|
||||
- 恢复 `ruoyi-ui/tests` 下 4 个业务测试脚本
|
||||
- 恢复项目原有部署辅助脚本:
|
||||
- `bin/prod/*.sh`
|
||||
- `bin/restart_java_backend*.sh`
|
||||
- 修正本地启动所需配置:
|
||||
- `logback.xml` 日志目录改为项目内 `logs`
|
||||
- `application.yml` 补齐 `swagger`、`redis`、`mybatis`
|
||||
- 增加 `ruoyi-loan-pricing` 模块挂载和依赖声明
|
||||
|
||||
## 验证结果
|
||||
|
||||
### 后端编译验证
|
||||
|
||||
已通过:
|
||||
|
||||
- `export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_202.jdk/Contents/Home && export PATH="$JAVA_HOME/bin:$PATH" && mvn -pl ruoyi-admin -am -DskipTests package`
|
||||
- `export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_202.jdk/Contents/Home && export PATH="$JAVA_HOME/bin:$PATH" && mvn -pl ruoyi-admin -am install -DskipTests`
|
||||
|
||||
### 前端构建验证
|
||||
|
||||
已通过:
|
||||
|
||||
- `source ~/.nvm/nvm.sh && nvm use 14.21.3 && npm install`
|
||||
- `source ~/.nvm/nvm.sh && nvm use 14.21.3 && npm run build:prod`
|
||||
|
||||
### 前后端联调验证
|
||||
|
||||
已验证:
|
||||
|
||||
- 前端开发服务成功启动于 `http://localhost:1024`
|
||||
- 浏览器打开 `http://localhost:1024/login`,页面标题显示为“若依管理系统”
|
||||
- 浏览器点击登录后成功进入 `/index`
|
||||
- 页面已实际渲染“流程列表”业务页面
|
||||
- 通过前端代理访问 `http://localhost:1024/dev-api/captchaImage` 返回:
|
||||
- `{"msg":"操作成功","code":200,"captchaEnabled":false}`
|
||||
- 源码态后端在 `Java 8 + spring-boot:run` 模式下可启动成功
|
||||
- 登录接口可成功返回 token:
|
||||
- `POST /login`
|
||||
|
||||
## 联调中发现的遗留问题
|
||||
|
||||
浏览器进入系统后,页面出现两条后端错误提示:
|
||||
|
||||
1. 数据库缺少 `sys_notice_read` 表
|
||||
2. `GET /loanPricing/workflow/list` 仍返回 `TooManyResultsException`
|
||||
|
||||
其中第 1 项已确认当前仓库 SQL 中已有对应建表语句:
|
||||
|
||||
- `sql/ry_20260330.sql`
|
||||
- `sql/loan_pricing_prod_init_20260331.sql`
|
||||
|
||||
说明当前代码迁移已落地,但联调数据库尚未完全补齐到 `springboot2` 基线所需表结构。
|
||||
|
||||
第 2 项已经定位到当前运行态仍存在列表查询返回值与 MyBatis 映射结果不一致的问题,表现为:
|
||||
|
||||
- `GET /loanPricing/workflow/list?pageNum=1&pageSize=10`
|
||||
- 返回:`{"msg":"nested exception is org.apache.ibatis.exceptions.TooManyResultsException: Expected one result (or null) to be returned by selectOne(), but found: 15","code":500}`
|
||||
|
||||
## 结论
|
||||
|
||||
本次代码迁移已经完成:
|
||||
|
||||
- 框架层已切回 `RuoYi-Vue springboot2`
|
||||
- 业务模块和业务页面已接回
|
||||
- Java 8 / Spring Boot 2 / Vue 2 的编译与构建链路已打通
|
||||
- 浏览器已成功进入业务页面与登录链路
|
||||
|
||||
当前剩余问题集中在:
|
||||
|
||||
- 联调数据库尚未补齐 `sys_notice_read` 表
|
||||
- `workflow/list` 运行态查询仍需继续收口
|
||||
Reference in New Issue
Block a user