@echo off chcp 65001 >nul 2>&1 setlocal EnableDelayedExpansion :: ============================================================ :: WBX Spring Core — Windows 설치 스크립트 :: 사용법: scripts\install.bat :: ============================================================ :: ---------- 프로젝트 루트 설정 ---------- set "PROJECT_ROOT=%~dp0.." pushd "!PROJECT_ROOT!" || ( echo [FAIL] 프로젝트 루트를 찾을 수 없습니다: %~dp0.. exit /b 1 ) echo. echo ========================================== echo WBX Spring Core — 설치 점검 echo ========================================== echo. set ERRORS=0 :: ---------- 1. JDK 21 ---------- echo 1. JDK 확인 set "JDK_OK=0" where java >nul 2>&1 if !ERRORLEVEL! equ 0 ( for /f "tokens=3" %%v in ('java -version 2^>^&1 ^| findstr /i "version"') do ( set "JAVA_FULL=%%~v" ) for /f "tokens=1 delims=." %%m in ("!JAVA_FULL!") do set "JAVA_MAJOR=%%m" if !JAVA_MAJOR! GEQ 21 ( echo [OK] JDK !JAVA_FULL! set "JDK_OK=1" ) else ( echo [INFO] JDK !JAVA_FULL! — 21 이상 필요, 자동 설치 시도... ) ) else ( echo [INFO] java 명령어 없음 — 자동 설치 시도... ) if !JDK_OK! equ 0 ( where winget >nul 2>&1 if !ERRORLEVEL! equ 0 ( echo [INFO] winget으로 Eclipse Temurin JDK 21 설치 중... winget install --id EclipseAdoptium.Temurin.21.JDK --accept-source-agreements --accept-package-agreements --silent if !ERRORLEVEL! equ 0 ( :: 설치된 JDK를 PATH에 추가 for /d %%j in ("C:\Program Files\Eclipse Adoptium\jdk-21*") do ( set "JAVA_HOME=%%j" ) if defined JAVA_HOME ( set "PATH=!JAVA_HOME!\bin;!PATH!" echo [OK] JDK 21 설치 완료 — !JAVA_HOME! echo [INFO] 시스템 PATH 반영을 위해 설치 후 새 터미널을 여세요. ) else ( echo [FAIL] JDK 설치 경로를 찾을 수 없습니다 set /a ERRORS+=1 ) ) else ( echo [FAIL] JDK 설치 실패 — 수동으로 JDK 21을 설치하세요 set /a ERRORS+=1 ) ) else ( echo [FAIL] winget 없음 — https://adoptium.net 에서 JDK 21을 수동 설치하세요 set /a ERRORS+=1 ) ) :: ---------- 2. Git ---------- echo 2. Git 확인 where git >nul 2>&1 if !ERRORLEVEL! equ 0 ( for /f "delims=" %%g in ('git --version') do echo [OK] %%g ) else ( echo [FAIL] git 없음 set /a ERRORS+=1 ) :: ---------- 3. Docker (선택) ---------- echo 3. Docker 확인 (선택) where docker >nul 2>&1 if !ERRORLEVEL! equ 0 ( for /f "delims=" %%d in ('docker --version') do echo [OK] %%d ) else ( echo [WARN] Docker 미설치 — DB/Redis를 직접 설치해야 합니다 ) :: ---------- 4. 빌드 ---------- echo 4. Gradle 빌드 if !ERRORS! GTR 0 ( echo [FAIL] 사전 요구사항 미충족 — 빌드 건너뜀 ) else ( call "!PROJECT_ROOT!\gradlew.bat" build -x test --console=plain -q if !ERRORLEVEL! equ 0 ( echo [OK] BUILD SUCCESSFUL ) else ( echo [FAIL] 빌드 실패 set /a ERRORS+=1 ) ) :: ---------- 5. .env 템플릿 ---------- echo 5. 환경변수 파일 if not exist "!PROJECT_ROOT!\.env" ( ( echo # ===== WBX Spring Core — 환경변수 ===== echo # 이 파일을 환경에 맞게 수정하세요. echo. echo # --- 프로필 --- echo SPRING_PROFILES_ACTIVE=prod,mysql echo. echo # --- 서버 --- echo SERVER_CONTEXT_PATH=/ echo. echo # --- JWT ^(필수 변경^^^!^) --- echo JWT_SECRET=your-production-secret-key-minimum-256-bits-long echo. echo # --- DB --- echo DB_HOST=localhost echo DB_PORT=3306 echo DB_NAME=wbx_spring echo DB_USER=wbxapp echo DB_PASS=StrongP@ss echo. echo # --- Redis --- echo SPRING_DATA_REDIS_HOST=localhost echo. echo # --- CORS --- echo CORS_ORIGINS=https://app.company.com echo. echo # --- 로그 경로 --- echo LOG_PATH=D:\wbx-app\logs\app.log echo. echo # --- Azure SSO ^(azure 프로필 사용 시^) --- echo # AZURE_CLIENT_ID= echo # AZURE_CLIENT_SECRET= echo # AZURE_TENANT_ID= echo. echo # --- Azure Blob Storage --- echo # AZURE_STORAGE_ACCOUNT= echo # AZURE_STORAGE_KEY= echo # AZURE_CONTAINER=uploads echo. echo # --- AWS Cognito ^(aws 프로필 사용 시^) --- echo # AWS_COGNITO_CLIENT_ID= echo # AWS_COGNITO_CLIENT_SECRET= echo # AWS_USER_POOL_ID= echo # AWS_REGION=ap-northeast-2 echo. echo # --- AWS S3 --- echo # AWS_S3_BUCKET= echo # AWS_ACCESS_KEY= echo # AWS_SECRET_KEY= ) > "!PROJECT_ROOT!\.env" echo [OK] .env 생성 완료 (값을 수정하세요) ) else ( echo [WARN] .env 이미 존재 — 건너뜀 ) :: ---------- 6. 디렉토리 ---------- echo 6. 디렉토리 생성 if not exist "!PROJECT_ROOT!\logs" mkdir "!PROJECT_ROOT!\logs" if not exist "!PROJECT_ROOT!\uploads" mkdir "!PROJECT_ROOT!\uploads" if not exist "!PROJECT_ROOT!\backup" mkdir "!PROJECT_ROOT!\backup" echo [OK] logs\ uploads\ backup\ :: ---------- 결과 ---------- echo. echo ========================================== if !ERRORS! equ 0 ( echo 설치 점검 완료 echo. echo 다음 단계: echo 1. .env 파일을 환경에 맞게 수정 echo 2. DB 생성 ^(또는 docker compose -f docker-compose-dev.yml up -d^) echo 3. gradlew.bat bootRun echo 4. http://localhost:8080/health 확인 ) else ( echo 오류 !ERRORS!건 — 위의 [FAIL] 항목을 해결하세요 ) echo ========================================== echo. popd endlocal