# Java后端一键重启脚本实施记录

## 修改目标

- 新增一个可直接在仓库内执行的后端重启脚本
- 脚本需支持重启前自动执行 `mvn -pl ruoyi-admin -am clean package -DskipTests`
- 重启完成后持续输出后端运行日志，便于直接观察启动结果和后续日志

## 修改内容

- 新增 `bin/restart_java_backend.sh`
  - 默认执行 `restart` 动作，无参即可触发一键重启
  - 重启流程固定为“先构建，后停机，再启动”
  - 停机时同时兼容端口 `62318` 和 `ruoyi-admin.jar` 关键字识别
  - 启动时改为参考 `bin/run.bat`，切换到 `ruoyi-admin/target/` 后后台执行 `java -jar ruoyi-admin.jar`
  - 启动日志统一落到仓库根目录 `logs/backend-console.log`
  - 启动后以前台 `tail -F` 持续输出控制台日志，便于直接查看
  - 保留 `start`、`stop`、`restart`、`status` 四个动作，便于和现有 `ry.sh` 使用习惯保持一致
- 新增 `docs/tests/scripts/test-restart-java-backend.sh`
  - 回归检查脚本是否切换到 `ruoyi-admin/target` 并使用 `java -jar ruoyi-admin.jar` 启动
  - 防止后续再次回退到 `spring-boot:run` 启动链路

## 验证记录

- 执行 `sh docs/tests/scripts/test-restart-java-backend.sh`
  - 结果：通过，已校验脚本使用 `java -jar` 启动打包产物
- 执行 `sh -n bin/restart_java_backend.sh`
  - 结果：通过，脚本语法正确
- 执行 `sh bin/restart_java_backend.sh restart`
  - 结果：通过，构建完成后在 `ruoyi-admin/target` 内触发 `java -jar ruoyi-admin.jar`
  - 关键日志：
    - `Starting RuoYiApplication using Java 21.0.9 with PID ... (/Users/wkc/Desktop/ccdi/ccdi/ruoyi-admin/target/ruoyi-admin.jar started by wkc in /Users/wkc/Desktop/ccdi/ccdi/ruoyi-admin/target)`
    - `Started RuoYiApplication in 7.457 seconds`
  - 进程核验：
    - `java -Duser.timezone=Asia/Shanghai -Xms512m -Xmx1024m -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=512m -XX:+HeapDumpOnOutOfMemoryError -jar ruoyi-admin.jar`
- 执行 `sh bin/restart_java_backend.sh stop`
  - 结果：测试完成后已停止本次验证拉起的后端进程，避免残留端口占用

## 影响范围

- 新增本地运维辅助脚本，不修改现有 Java 业务代码
- 日志新增输出文件：`logs/backend-console.log`
- 不影响前端、数据库和 Mock 服务逻辑
