Files
hzdyjs/backend/hot-start.bat
T
zlwu 249b1dfeb4 feat: 完善项目开发规范和测试文档体系
📝 主要改进:
• Cursor配置模块化:拆分为前端、后端、移动端、文档、API测试5个专门规范文件
• API文档重新组织:按业务模块拆分到docs/开发文档/API/目录下
• 新增维修分类功能完整测试方案和自动化测试脚本
• 后端热启动脚本完善,支持Linux/Windows双平台
• 强化文档同步更新规范,确保代码与文档一致性

🔧 技术改进:
• 优化Cursor AI工作流程和代码生成质量
• 完善API测试规范(AES+RSA双重加密登录方法)
• 提升开发效率和代码质量标准化程度

�� 测试覆盖:
• 维修分类管理功能端到端测试验证通过
• 包含页面加载、CRUD操作、搜索功能等核心测试用例

更新时间:2025-07-01
2025-07-01 17:53:05 +08:00

369 lines
8.7 KiB
Batchfile

@echo off
chcp 65001 >nul
setlocal EnableDelayedExpansion
:: =============================================================================
:: RuoYi-Vue-Plus 热启动脚本 (Windows版)
:: 功能:启动应用并支持热加载、多环境切换等功能
:: 位置:backend/hot-start.bat
:: 作者:zlwu
:: 时间:2025-07-01
:: =============================================================================
:: 默认配置
set DEFAULT_PROFILE=dev
set DEFAULT_PORT=8080
set DEFAULT_MODULE=ruoyi-admin
set MAVEN_OPTS=-Xms512m -Xmx2048m -XX:+UseG1GC
:: 脚本信息
set SCRIPT_NAME=RuoYi热启动脚本
set SCRIPT_VERSION=1.0.0
:: 参数初始化
set PROFILE=%DEFAULT_PROFILE%
set PORT=%DEFAULT_PORT%
set MODULE=%DEFAULT_MODULE%
set CLEAN_BUILD=false
set DEBUG_MODE=false
set HOT_RELOAD=true
set JVM_OPTS=
set CHECK_ONLY=false
:: 显示Logo
:show_logo
echo.
echo ==================================================================================
echo ____ __ ___ _ _ _ _ ____ _ _
echo ^| _ \ _ _ ___ ^| \/ ^(_^) ^| ^| ^| ^| ___ ^| ^|_ / ___^|^| ^|_ __ _ _ __^| ^|_
echo ^| ^|_^) ^| ^| ^| ^|/ _ \ ^| ^|\/^| ^| ^|_____^| ^|_^| ^|/ _ \^| __^| \___ \^| __/ _` ^| '__^| __^|
echo ^| _ ^<^| ^|_^| ^| ^(_^) ^|^| ^| ^| ^| ^|_____^| _ ^| ^(_^) ^| ^|_ ___^) ^| ^|^| ^(_^| ^| ^| ^| ^|_
echo ^|_^| \_\\__,_^|\___/ ^|_^| ^|_^|_^| ^|_^| ^|_^|\___/ \__^| ^|____/ \__\__,_^|_^| \__^|
echo.
echo 🚀 %SCRIPT_NAME% v%SCRIPT_VERSION% 🚀
echo ==================================================================================
echo.
goto :eof
:: 显示帮助信息
:show_help
echo 用法: %~nx0 [选项]
echo.
echo 选项:
echo -h, --help 显示此帮助信息
echo -p, --profile 指定环境配置 ^(dev/test/prod,默认: dev^)
echo -P, --port 指定端口号 ^(默认: 8080^)
echo -c, --clean 清理编译后启动
echo -d, --debug 启用调试模式
echo -t, --test 测试模式启动
echo --no-hot 禁用热加载功能
echo --check 检查环境配置
echo.
echo 示例:
echo %~nx0 # 使用默认配置启动^(开发环境+热加载^)
echo %~nx0 -p prod # 生产环境启动
echo %~nx0 -P 9090 # 指定端口9090启动
echo %~nx0 -c # 清理编译后启动
echo %~nx0 -d # 调试模式启动
echo %~nx0 --no-hot # 禁用热加载启动
echo %~nx0 --check # 检查环境配置
echo.
echo 🔥 热加载功能说明:
echo - 开发环境默认启用热加载,修改代码后自动重启
echo - 支持Java代码、配置文件、MyBatis映射文件热加载
echo - 详细配置见: docs/开发文档/热加载配置说明.md
goto :eof
:: 检查环境
:check_environment
echo 🔍 检查运行环境...
:: 检查Java版本
java -version >nul 2>&1
if !errorlevel! neq 0 (
echo ❌ 未找到Java环境
exit /b 1
) else (
for /f "tokens=3" %%a in ('java -version 2^>^&1 ^| findstr "version"') do (
set JAVA_VERSION=%%a
set JAVA_VERSION=!JAVA_VERSION:"=!
echo ✅ Java版本: !JAVA_VERSION!
)
)
:: 检查Maven版本
mvn -version >nul 2>&1
if !errorlevel! neq 0 (
echo ❌ 未找到Maven环境
exit /b 1
) else (
for /f "tokens=3" %%a in ('mvn -version 2^>nul ^| findstr "Apache Maven"') do (
echo ✅ Maven版本: %%a
)
)
:: 检查目标模块
if exist "%DEFAULT_MODULE%" (
echo ✅ 目标模块: %DEFAULT_MODULE%
) else (
echo ❌ 未找到目标模块: %DEFAULT_MODULE%
exit /b 1
)
:: 检查热加载配置
findstr /c:"spring-boot-devtools" "%DEFAULT_MODULE%\pom.xml" >nul 2>&1
if !errorlevel! equ 0 (
echo ✅ 热加载配置: 已启用
) else (
echo ⚠️ 热加载配置: 未配置
)
:: 检查配置文件
if exist "%DEFAULT_MODULE%\src\main\resources\application-%DEFAULT_PROFILE%.yml" (
echo ✅ 配置文件: %DEFAULT_MODULE%\src\main\resources\application-%DEFAULT_PROFILE%.yml
) else (
echo ❌ 未找到配置文件: %DEFAULT_MODULE%\src\main\resources\application-%DEFAULT_PROFILE%.yml
exit /b 1
)
echo ✅ 环境检查完成
exit /b 0
:: 检查端口占用
:check_port
netstat -an | findstr ":%PORT% " >nul 2>&1
if !errorlevel! equ 0 (
echo ⚠️ 端口 %PORT% 已被占用
echo 正在尝试找到占用进程...
for /f "tokens=5" %%a in ('netstat -ano ^| findstr ":%PORT% "') do (
set PID=%%a
for /f "tokens=1" %%b in ('tasklist /fi "pid eq !PID!" /fo csv /nh') do (
set PROCESS_NAME=%%b
set PROCESS_NAME=!PROCESS_NAME:"=!
echo 进程: !PROCESS_NAME! ^(PID: !PID!^)
)
)
echo.
set /p REPLY="是否要杀死占用进程并继续启动? (y/n): "
if /i "!REPLY!"=="y" (
echo 正在杀死端口 %PORT% 的占用进程...
for /f "tokens=5" %%a in ('netstat -ano ^| findstr ":%PORT% "') do (
taskkill /pid %%a /f >nul 2>&1
)
timeout /t 2 /nobreak >nul
echo ✅ 端口已释放
) else (
echo ❌ 启动已取消
exit /b 1
)
)
exit /b 0
:: 清理编译
:clean_build
echo 🧹 清理编译...
cd /d "%DEFAULT_MODULE%"
mvn clean >nul 2>&1
if !errorlevel! equ 0 (
echo ✅ 清理完成
) else (
echo ❌ 清理失败
exit /b 1
)
cd ..
exit /b 0
:: 构建项目
:build_project
echo 🔨 编译项目...
cd /d "%DEFAULT_MODULE%"
mvn compile -q
if !errorlevel! equ 0 (
echo ✅ 编译完成
) else (
echo ❌ 编译失败
exit /b 1
)
cd ..
exit /b 0
:: 启动应用
:start_application
echo 🚀 启动应用...
echo 配置信息:
echo 📂 模块: %DEFAULT_MODULE%
echo 🌍 环境: %PROFILE%
echo 🔌 端口: %PORT%
if "%HOT_RELOAD%"=="true" (
echo 🔥 热加载: 启用
) else (
echo 🔥 热加载: 禁用
)
if "%DEBUG_MODE%"=="true" (
echo 🐛 调试模式: 启用
) else (
echo 🐛 调试模式: 禁用
)
echo.
cd /d "%DEFAULT_MODULE%"
:: 构建Maven命令
set MVN_CMD=mvn spring-boot:run
:: 添加环境配置
set MVN_CMD=%MVN_CMD% -Dspring-boot.run.profiles=%PROFILE%
:: 添加端口配置
if not "%PORT%"=="%DEFAULT_PORT%" (
set MVN_CMD=%MVN_CMD% -Dspring-boot.run.arguments=--server.port=%PORT%
)
:: 添加JVM参数
if not "%JVM_OPTS%"=="" (
set MVN_CMD=%MVN_CMD% -Dspring-boot.run.jvmArguments="%JVM_OPTS%"
) else (
set MVN_CMD=%MVN_CMD% -Dspring-boot.run.jvmArguments="%MAVEN_OPTS%"
)
:: 调试模式
if "%DEBUG_MODE%"=="true" (
set MVN_CMD=%MVN_CMD% -Dspring-boot.run.jvmArguments="%MAVEN_OPTS% -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005"
echo 🐛 调试端口: 5005
)
:: 禁用热加载
if "%HOT_RELOAD%"=="false" (
set MVN_CMD=%MVN_CMD% -Dspring.devtools.restart.enabled=false
)
echo 执行命令: %MVN_CMD%
echo ==================== 应用启动日志 ====================
echo.
:: 执行命令
%MVN_CMD%
exit /b 0
:: 参数解析
:parse_args
if "%~1"=="" goto args_done
if "%~1"=="-h" goto show_help_and_exit
if "%~1"=="--help" goto show_help_and_exit
if "%~1"=="-p" (
set PROFILE=%~2
shift
shift
goto parse_args
)
if "%~1"=="--profile" (
set PROFILE=%~2
shift
shift
goto parse_args
)
if "%~1"=="-P" (
set PORT=%~2
shift
shift
goto parse_args
)
if "%~1"=="--port" (
set PORT=%~2
shift
shift
goto parse_args
)
if "%~1"=="-c" (
set CLEAN_BUILD=true
shift
goto parse_args
)
if "%~1"=="--clean" (
set CLEAN_BUILD=true
shift
goto parse_args
)
if "%~1"=="-d" (
set DEBUG_MODE=true
shift
goto parse_args
)
if "%~1"=="--debug" (
set DEBUG_MODE=true
shift
goto parse_args
)
if "%~1"=="-t" (
set PROFILE=test
shift
goto parse_args
)
if "%~1"=="--test" (
set PROFILE=test
shift
goto parse_args
)
if "%~1"=="--no-hot" (
set HOT_RELOAD=false
shift
goto parse_args
)
if "%~1"=="--check" (
set CHECK_ONLY=true
shift
goto parse_args
)
echo 未知参数: %~1
call :show_help
exit /b 1
:show_help_and_exit
call :show_help
exit /b 0
:args_done
:: 主程序
:main
:: 显示Logo
call :show_logo
:: 仅检查环境
if "%CHECK_ONLY%"=="true" (
call :check_environment
exit /b !errorlevel!
)
:: 环境检查
call :check_environment
if !errorlevel! neq 0 (
echo ❌ 环境检查失败,请检查配置
exit /b 1
)
echo.
:: 端口检查
call :check_port
if !errorlevel! neq 0 exit /b 1
:: 清理编译
if "%CLEAN_BUILD%"=="true" (
call :clean_build
if !errorlevel! neq 0 exit /b 1
echo.
)
:: 编译项目
call :build_project
if !errorlevel! neq 0 exit /b 1
echo.
:: 启动应用
call :start_application
exit /b 0
:: 解析参数并执行主程序
call :parse_args %*
call :main