📝 主要改进: • Cursor配置模块化:拆分为前端、后端、移动端、文档、API测试5个专门规范文件 • API文档重新组织:按业务模块拆分到docs/开发文档/API/目录下 • 新增维修分类功能完整测试方案和自动化测试脚本 • 后端热启动脚本完善,支持Linux/Windows双平台 • 强化文档同步更新规范,确保代码与文档一致性 🔧 技术改进: • 优化Cursor AI工作流程和代码生成质量 • 完善API测试规范(AES+RSA双重加密登录方法) • 提升开发效率和代码质量标准化程度 �� 测试覆盖: • 维修分类管理功能端到端测试验证通过 • 包含页面加载、CRUD操作、搜索功能等核心测试用例 更新时间:2025-07-01
369 lines
8.7 KiB
Batchfile
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 |