| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110 |
- @echo off
- chcp 65001 > nul
- setlocal enabledelayedexpansion
- :: =============================================================
- :: 智价云药店系统 - 生产环境启动脚本
- :: 用法:start-prod.bat [start|stop|build]
- :: 依赖:JDK 17
- :: =============================================================
- title 智价云药店 - 生产环境
- set APP_NAME=zhijiayun-pharmacy
- set JAR_NAME=zhijiayun-gateway-1.0.0.jar
- set PROJECT_DIR=%~dp0..
- set DEPLOY_DIR=%~dp0
- set JAR_PATH=%DEPLOY_DIR%%JAR_NAME%
- set LOG_DIR=%DEPLOY_DIR%logs
- :: JVM 参数(生产推荐配置)
- set JAVA_OPTS=-server -Xms512m -Xmx1g -XX:+UseG1GC -XX:MaxGCPauseMillis=200 -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=%LOG_DIR%\heapdump.hprof -Dfile.encoding=UTF-8 -Duser.timezone=Asia/Shanghai
- set ACTION=%1
- if "%ACTION%"=="" set ACTION=start
- if "%ACTION%"=="start" goto :do_start
- if "%ACTION%"=="stop" goto :do_stop
- if "%ACTION%"=="build" goto :do_build
- goto :show_help
- :: ============================================================
- :do_build
- echo [INFO] Maven 打包(跳过测试)...
- cd /d "%PROJECT_DIR%"
- call mvn clean package -DskipTests -pl zhijiayun-gateway -am
- if errorlevel 1 (
- echo [ERROR] 构建失败
- pause
- exit /b 1
- )
- echo [INFO] 复制 JAR 到 deploy 目录...
- copy /Y "%PROJECT_DIR%\zhijiayun-gateway\target\%JAR_NAME%" "%DEPLOY_DIR%" > nul
- echo [INFO] 构建完成:%JAR_PATH%
- goto :eof
- :: ============================================================
- :do_start
- :: 检查 JAR 是否存在
- if not exist "%JAR_PATH%" (
- echo [WARN] JAR 包不存在,自动执行构建...
- call :do_build
- )
- :: 检查端口
- netstat -ano | findstr ":8002 " | findstr "LISTENING" > nul 2>&1
- if not errorlevel 1 (
- echo [WARN] 端口 8002 已被占用
- netstat -ano | findstr ":8002 " | findstr "LISTENING"
- pause
- exit /b 1
- )
- if not exist "%LOG_DIR%" mkdir "%LOG_DIR%"
- echo.
- echo ================================================================
- echo %APP_NAME% - 生产环境
- echo JAR: %JAR_PATH%
- echo 日志: %LOG_DIR%
- echo 端口: 8002
- echo Profile: prod
- echo ================================================================
- echo.
- :: 加载 .env 文件(如果存在)
- if exist "%DEPLOY_DIR%.env" (
- echo [INFO] 加载环境变量: .env
- for /f "usebackq tokens=1,* delims==" %%A in ("%DEPLOY_DIR%.env") do (
- set line=%%A
- if not "!line:~0,1!"=="#" (
- if not "%%B"=="" set "%%A=%%B"
- )
- )
- )
- java %JAVA_OPTS% ^
- -jar "%JAR_PATH%" ^
- --spring.profiles.active=prod
- goto :eof
- :: ============================================================
- :do_stop
- echo [INFO] 查找并停止 %APP_NAME%...
- for /f "tokens=5" %%i in ('netstat -ano ^| findstr ":8002 " ^| findstr "LISTENING"') do (
- echo [INFO] 终止进程 PID=%%i
- taskkill /PID %%i /F > nul 2>&1
- )
- echo [INFO] 应用已停止
- goto :eof
- :: ============================================================
- :show_help
- echo 用法: start-prod.bat [命令]
- echo.
- echo start 启动应用(默认)
- echo stop 停止应用
- echo build Maven 打包并复制到 deploy 目录
- echo.
- pause
- goto :eof
|