# 2026-04-14 后端运行与打包约定实施记录 ## 1. 改动目标 - 固化本地后端继续走 `ruoyi-admin.jar + 内嵌 Tomcat` 启动链路 - 固化 `mvn -pl ruoyi-admin -am package -DskipTests` 同时产出 `jar` 与 `war` - 固化部署脚本统一消费 `ruoyi-admin.war` - 固化 `bin/restart_java_backend.sh` 默认跟随后端日志,并支持 `FOLLOW_LOGS=false` ## 2. 实施内容 ### 2.1 Maven 打包链路 涉及文件: - `ruoyi-admin/pom.xml` 实施内容: - 保持 `ruoyi-admin` 的 `jar` 不变,确保本地运行仍使用可执行 `jar` - 为 `maven-war-plugin` 增加 `package` 阶段显式执行 `war` 目标,确保执行 `mvn -pl ruoyi-admin -am package -DskipTests` 时额外生成 `ruoyi-admin.war` - 保留 `spring-boot-maven-plugin repackage`,继续生成可执行 `ruoyi-admin.jar` ### 2.2 本地后端重启脚本 涉及文件: - `bin/restart_java_backend.sh` 实施内容: - 新增 `FOLLOW_LOGS="${FOLLOW_LOGS:-true}"` 默认开关 - `start`、`restart` 成功后默认执行 `tail -F` 持续输出后端日志 - 当外部传入 `FOLLOW_LOGS=false` 时,仅启动后端,不进入日志跟随 ### 2.3 部署产物切换 涉及文件: - `deploy/deploy-to-nas.sh` - `deploy/deploy.ps1` - `docker/backend/Dockerfile` 实施内容: - 部署目录组装时由复制 `ruoyi-admin.jar` 改为复制 `ruoyi-admin.war` - Docker 后端镜像改为消费 `ruoyi-admin.war` - 保证部署脚本不再把 `ruoyi-admin.jar` 当作生产部署产物 ### 2.4 项目约定同步 涉及文件: - `AGENTS.md` 实施内容: - 补充本地运行、双产物打包、部署使用 `war`、`FOLLOW_LOGS` 开关等仓库级约定 - 在 Build / Run / Test Commands 中补充主应用定向打包命令 ## 3. 验证记录 ### 3.1 脚本检查 执行: ```bash sh docs/tests/scripts/test-restart-java-backend.sh sh docs/tests/scripts/test-backend-package-and-deploy-conventions.sh ``` 结果: - 两个脚本均通过 ### 3.2 Maven 双产物验证 执行: ```bash mvn -pl ruoyi-admin -am package -DskipTests ``` 结果: - 构建成功 - 生成 `ruoyi-admin/target/ruoyi-admin.jar` - 生成 `ruoyi-admin/target/ruoyi-admin.war` ## 4. 结论 - 本地开发链路继续保持 `jar + 内嵌 Tomcat` - 部署链路统一切换为 `war` - 后端重启脚本默认跟日志,且支持显式关闭