start-dev.bat 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143
  1. @echo off
  2. chcp 65001 > nul
  3. setlocal enabledelayedexpansion
  4. :: =============================================================
  5. :: 智价云(药店版) - Windows 开发环境启动脚本
  6. :: 用法:双击运行 或 start-dev.bat [start|stop|build]
  7. :: 依赖:Docker Desktop、JDK 17、Maven 3.8+
  8. :: =============================================================
  9. title 智价云(药店版) - 开发环境
  10. set APP_NAME=zhijiayun-pharmacy
  11. set JAR_NAME=zhijiayun-gateway-1.0.0.jar
  12. set PROJECT_DIR=%~dp0..
  13. set JAR_PATH=%PROJECT_DIR%\zhijiayun-gateway\target\%JAR_NAME%
  14. set LOG_DIR=%PROJECT_DIR%\logs
  15. :: JVM 参数
  16. set JAVA_OPTS=-Xms256m -Xmx768m -XX:+UseG1GC -Dfile.encoding=UTF-8 -Duser.timezone=Asia/Shanghai
  17. set ACTION=%1
  18. if "%ACTION%"=="" set ACTION=start
  19. if "%ACTION%"=="start" goto :do_start
  20. if "%ACTION%"=="stop" goto :do_stop
  21. if "%ACTION%"=="build" goto :do_build
  22. if "%ACTION%"=="infra" goto :do_infra
  23. goto :show_help
  24. :: ============================================================
  25. :do_infra
  26. :: 启动 Docker 基础设施(MySQL + Redis)
  27. echo [INFO] 检查 Docker 是否运行...
  28. docker info > nul 2>&1
  29. if errorlevel 1 (
  30. echo [ERROR] Docker 未运行,请先启动 Docker Desktop
  31. pause
  32. exit /b 1
  33. )
  34. echo [INFO] 启动 MySQL 容器...
  35. docker start mysql8 > nul 2>&1 || (
  36. echo [INFO] 创建 MySQL 容器...
  37. docker run -d ^
  38. --name mysql8 ^
  39. -e MYSQL_ROOT_PASSWORD=Root@123456 ^
  40. -e MYSQL_DATABASE=zhijiayun_pharmacy ^
  41. -e TZ=Asia/Shanghai ^
  42. -p 3308:3306 ^
  43. mysql:8.0 ^
  44. --character-set-server=utf8mb4 ^
  45. --collation-server=utf8mb4_unicode_ci ^
  46. --default-time-zone=+08:00
  47. )
  48. echo [INFO] 启动 Redis 容器...
  49. docker start redis7 > nul 2>&1 || (
  50. echo [INFO] 创建 Redis 容器...
  51. docker run -d ^
  52. --name redis7 ^
  53. -p 6379:6379 ^
  54. redis:7 ^
  55. redis-server --requirepass 123456
  56. )
  57. echo [INFO] 等待数据库就绪...
  58. timeout /t 5 /nobreak > nul
  59. echo [INFO] ✅ 基础设施已启动
  60. echo MySQL: localhost:3308 (root / Root@123456)
  61. echo Redis: localhost:6379 (密码: 123456)
  62. goto :eof
  63. :: ============================================================
  64. :do_build
  65. echo [INFO] Maven 打包(跳过测试)...
  66. cd /d "%PROJECT_DIR%"
  67. call mvn clean package -DskipTests -pl zhijiayun-gateway -am
  68. if errorlevel 1 (
  69. echo [ERROR] 构建失败,请查看上方错误信息
  70. pause
  71. exit /b 1
  72. )
  73. echo [INFO] ✅ 构建完成:%JAR_PATH%
  74. goto :eof
  75. :: ============================================================
  76. :do_start
  77. :: 检查 JAR 是否存在,若不存在则自动构建
  78. if not exist "%JAR_PATH%" (
  79. echo [WARN] JAR 包不存在,自动执行构建...
  80. call :do_build
  81. )
  82. :: 确保基础设施运行
  83. call :do_infra
  84. :: 检查端口是否被占用
  85. netstat -ano | findstr ":8001 " | findstr "LISTENING" > nul 2>&1
  86. if not errorlevel 1 (
  87. echo [WARN] 端口 8001 已被占用,请先停止旧进程
  88. netstat -ano | findstr ":8001 " | findstr "LISTENING"
  89. pause
  90. exit /b 1
  91. )
  92. echo.
  93. echo [INFO] 启动 %APP_NAME%(开发环境 dev profile)...
  94. echo [INFO] 日志目录:%LOG_DIR%
  95. echo [INFO] 访问地址:http://localhost:8001
  96. echo [INFO] 按 Ctrl+C 停止应用
  97. echo.
  98. if not exist "%LOG_DIR%" mkdir "%LOG_DIR%"
  99. java %JAVA_OPTS% ^
  100. -jar "%JAR_PATH%" ^
  101. --spring.profiles.active=dev
  102. goto :eof
  103. :: ============================================================
  104. :do_stop
  105. echo [INFO] 查找并停止 %APP_NAME%...
  106. for /f "tokens=5" %%i in ('netstat -ano ^| findstr ":8001 " ^| findstr "LISTENING"') do (
  107. echo [INFO] 终止进程 PID=%%i
  108. taskkill /PID %%i /F > nul 2>&1
  109. )
  110. echo [INFO] ✅ 应用已停止
  111. goto :eof
  112. :: ============================================================
  113. :show_help
  114. echo 用法: start-dev.bat [命令]
  115. echo.
  116. echo (无参数) 启动应用(自动构建+启动基础设施)
  117. echo start 同上
  118. echo stop 停止应用(释放 8001 端口)
  119. echo build 仅 Maven 打包,不启动
  120. echo infra 仅启动 Docker MySQL/Redis,不启动应用
  121. echo.
  122. pause
  123. goto :eof