调整后端脚本为Jar启动方式
This commit is contained in:
@@ -6,11 +6,13 @@ SCRIPT_DIR=$(CDPATH= cd -- "$(dirname -- "$0")" && pwd)
|
||||
ROOT_DIR=$(CDPATH= cd -- "$SCRIPT_DIR/.." && pwd)
|
||||
LOG_DIR="$ROOT_DIR/logs"
|
||||
CONSOLE_LOG="$LOG_DIR/backend-console.log"
|
||||
PID_FILE="$LOG_DIR/backend-spring-boot-run.pid"
|
||||
PID_FILE="$LOG_DIR/backend-java.pid"
|
||||
TARGET_DIR="$ROOT_DIR/ruoyi-admin/target"
|
||||
JAR_NAME="ruoyi-admin.jar"
|
||||
SERVER_PORT=62318
|
||||
STOP_WAIT_SECONDS=30
|
||||
APP_KEYWORD="com.ruoyi.RuoYiApplication"
|
||||
SPRING_BOOT_JVM_ARGS="-Duser.timezone=Asia/Shanghai -Xms512m -Xmx1024m -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=512m -XX:+HeapDumpOnOutOfMemoryError"
|
||||
APP_KEYWORD="$JAR_NAME"
|
||||
JAVA_OPTS="-Duser.timezone=Asia/Shanghai -Xms512m -Xmx1024m -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=512m -XX:+HeapDumpOnOutOfMemoryError"
|
||||
|
||||
timestamp() {
|
||||
date "+%Y-%m-%d %H:%M:%S"
|
||||
@@ -127,11 +129,14 @@ start_backend() {
|
||||
printf '\n===== %s restart =====\n' "$(timestamp)" >> "$CONSOLE_LOG"
|
||||
|
||||
log_info "开始启动后端,控制台日志输出到: $CONSOLE_LOG"
|
||||
if [ ! -f "$TARGET_DIR/$JAR_NAME" ]; then
|
||||
log_error "未找到打包产物: $TARGET_DIR/$JAR_NAME"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
(
|
||||
cd "$ROOT_DIR/ruoyi-admin"
|
||||
nohup mvn -DskipTests \
|
||||
-Dspring-boot.run.jvmArguments="$SPRING_BOOT_JVM_ARGS" \
|
||||
spring-boot:run >> "$CONSOLE_LOG" 2>&1 &
|
||||
cd "$TARGET_DIR"
|
||||
nohup java $JAVA_OPTS -jar "$JAR_NAME" >> "$CONSOLE_LOG" 2>&1 &
|
||||
echo $! > "$PID_FILE"
|
||||
)
|
||||
|
||||
|
||||
@@ -11,27 +11,28 @@
|
||||
- 新增 `bin/restart_java_backend.sh`
|
||||
- 默认执行 `restart` 动作,无参即可触发一键重启
|
||||
- 重启流程固定为“先构建,后停机,再启动”
|
||||
- 停机时同时兼容端口 `62318` 和 `com.ruoyi.RuoYiApplication` 关键字识别,覆盖 `jar`、IDE、`spring-boot:run` 等常见启动方式
|
||||
- 启动时改为切换到 `ruoyi-admin/` 目录后后台执行 `mvn -DskipTests spring-boot:run`
|
||||
- 停机时同时兼容端口 `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`
|
||||
- 回归检查 `spring-boot:run` 是否在 `ruoyi-admin` 模块目录执行
|
||||
- 防止再次误从根聚合工程触发,导致 `Unable to find a suitable main class`
|
||||
- 回归检查脚本是否切换到 `ruoyi-admin/target` 并使用 `java -jar ruoyi-admin.jar` 启动
|
||||
- 防止后续再次回退到 `spring-boot:run` 启动链路
|
||||
|
||||
## 验证记录
|
||||
|
||||
- 执行 `sh docs/tests/scripts/test-restart-java-backend.sh`
|
||||
- 结果:通过,已校验 `spring-boot:run` 在 `ruoyi-admin` 模块目录执行
|
||||
- 结果:通过,已校验脚本使用 `java -jar` 启动打包产物
|
||||
- 执行 `sh -n bin/restart_java_backend.sh`
|
||||
- 结果:通过,脚本语法正确
|
||||
- 执行 `sh bin/restart_java_backend.sh restart`
|
||||
- 结果:通过,构建完成后在 `ruoyi-admin` 模块内触发 `spring-boot:run`
|
||||
- 结果:通过,构建完成后在 `ruoyi-admin/target` 内触发 `java -jar ruoyi-admin.jar`
|
||||
- 关键日志:
|
||||
- `Building ruoyi-admin 3.9.1`
|
||||
- `Starting RuoYiApplication`
|
||||
- `Started RuoYiApplication`
|
||||
- `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`
|
||||
- 结果:测试完成后已停止本次验证拉起的后端进程,避免残留端口占用
|
||||
|
||||
|
||||
@@ -5,25 +5,35 @@ set -eu
|
||||
ROOT_DIR=$(CDPATH= cd -- "$(dirname -- "$0")/../../.." && pwd)
|
||||
SCRIPT_FILE="$ROOT_DIR/bin/restart_java_backend.sh"
|
||||
|
||||
echo "[检查] spring-boot:run 必须在 ruoyi-admin 模块目录执行"
|
||||
echo "[检查] 后端脚本必须使用 java -jar 启动打包产物"
|
||||
|
||||
if ! grep -Fq 'cd "$ROOT_DIR/ruoyi-admin"' "$SCRIPT_FILE"; then
|
||||
echo "失败: 未切换到 ruoyi-admin 模块目录"
|
||||
if ! grep -Fq 'TARGET_DIR="$ROOT_DIR/ruoyi-admin/target"' "$SCRIPT_FILE"; then
|
||||
echo "失败: 未定义 ruoyi-admin 打包产物目录"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if grep -Fq 'nohup mvn -pl ruoyi-admin -am -DskipTests' "$SCRIPT_FILE"; then
|
||||
echo "失败: 仍在根工程直接执行 spring-boot:run"
|
||||
if ! grep -Fq 'JAR_NAME="ruoyi-admin.jar"' "$SCRIPT_FILE"; then
|
||||
echo "失败: 未定义目标 jar 文件名"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if ! grep -Fq 'nohup mvn -DskipTests' "$SCRIPT_FILE"; then
|
||||
echo "失败: 未使用模块内 mvn -DskipTests spring-boot:run"
|
||||
if ! grep -Fq 'nohup java $JAVA_OPTS -jar "$JAR_NAME"' "$SCRIPT_FILE"; then
|
||||
echo "失败: 未使用 java -jar 启动"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if ! grep -Fq 'spring-boot:run >> "$CONSOLE_LOG" 2>&1 &' "$SCRIPT_FILE"; then
|
||||
echo "失败: 未找到 spring-boot:run 后台启动命令"
|
||||
if grep -Fq 'spring-boot:run' "$SCRIPT_FILE"; then
|
||||
echo "失败: 脚本仍包含 spring-boot:run 启动方式"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if ! grep -Fq 'APP_KEYWORD="$JAR_NAME"' "$SCRIPT_FILE"; then
|
||||
echo "失败: 进程识别未切换到 jar 关键字"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if ! grep -Fq 'cd "$TARGET_DIR"' "$SCRIPT_FILE"; then
|
||||
echo "失败: 启动前未切换到 target 目录"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
|
||||
Reference in New Issue
Block a user