install 스크립트 개선: JDK 21 자동 설치, 경로 문제 수정, 문서 업데이트
- install.bat/install.sh: JDK 미설치 시 자동 설치 (winget/brew/apt/yum) - install.bat: ERRORLEVEL 지연 확장 통일, gradlew 경로 수정, CRLF/이스케이프 수정 - install.sh: set -euo pipefail 제거, PROJECT_ROOT 기준 경로로 변경 - Lombok @Builder.Default 경고 3건 수정 (WbxUserRole, WbxAuditLog, RolePermission) - 개발자가이드/설치가이드 PDF: JDK 자동 설치 기능 반영 Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
이 Commit은 다음에 포함되어 있습니다:
@@ -3,7 +3,6 @@
|
||||
# WBX Spring Core — Linux/macOS 설치 스크립트
|
||||
# 사용법: chmod +x scripts/install.sh && ./scripts/install.sh
|
||||
# ============================================================
|
||||
set -euo pipefail
|
||||
|
||||
# ---------- 색상 ----------
|
||||
RED='\033[0;31m'; GREEN='\033[0;32m'; YELLOW='\033[1;33m'; CYAN='\033[0;36m'; NC='\033[0m'
|
||||
@@ -14,6 +13,11 @@ info() { echo -e " ${CYAN}[INFO]${NC} $1"; }
|
||||
|
||||
ERRORS=0
|
||||
|
||||
# ---------- 프로젝트 루트 설정 ----------
|
||||
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||
PROJECT_ROOT="$(cd "$SCRIPT_DIR/.." && pwd)"
|
||||
cd "$PROJECT_ROOT" || { echo "[FAIL] 프로젝트 루트를 찾을 수 없습니다: $SCRIPT_DIR/.."; exit 1; }
|
||||
|
||||
echo ""
|
||||
echo "=========================================="
|
||||
echo " WBX Spring Core — 설치 점검"
|
||||
@@ -22,17 +26,100 @@ echo ""
|
||||
|
||||
# ---------- 1. JDK 21 ----------
|
||||
echo "1. JDK 확인"
|
||||
JDK_OK=0
|
||||
if command -v java &>/dev/null; then
|
||||
JAVA_VER=$(java -version 2>&1 | head -1 | awk -F '"' '{print $2}' | cut -d. -f1)
|
||||
if [ "$JAVA_VER" -ge 21 ] 2>/dev/null; then
|
||||
ok "JDK $JAVA_VER"
|
||||
JDK_OK=1
|
||||
else
|
||||
fail "JDK $JAVA_VER (21 이상 필요)"
|
||||
ERRORS=$((ERRORS + 1))
|
||||
info "JDK $JAVA_VER — 21 이상 필요, 자동 설치 시도..."
|
||||
fi
|
||||
else
|
||||
fail "java 명령어 없음 — JDK 21 설치 필요"
|
||||
ERRORS=$((ERRORS + 1))
|
||||
info "java 명령어 없음 — 자동 설치 시도..."
|
||||
fi
|
||||
|
||||
if [ $JDK_OK -eq 0 ]; then
|
||||
if [[ "$(uname)" == "Darwin" ]]; then
|
||||
# macOS — Homebrew
|
||||
if command -v brew &>/dev/null; then
|
||||
info "Homebrew로 Temurin JDK 21 설치 중..."
|
||||
if brew install --cask temurin@21; then
|
||||
export JAVA_HOME=$(/usr/libexec/java_home -v 21 2>/dev/null || true)
|
||||
if [ -n "$JAVA_HOME" ]; then
|
||||
export PATH="$JAVA_HOME/bin:$PATH"
|
||||
ok "JDK 21 설치 완료 — $JAVA_HOME"
|
||||
else
|
||||
fail "JDK 설치 경로를 찾을 수 없습니다"
|
||||
ERRORS=$((ERRORS + 1))
|
||||
fi
|
||||
else
|
||||
fail "JDK 설치 실패 — 수동으로 JDK 21을 설치하세요"
|
||||
ERRORS=$((ERRORS + 1))
|
||||
fi
|
||||
else
|
||||
fail "Homebrew 없음 — https://adoptium.net 에서 JDK 21을 수동 설치하세요"
|
||||
ERRORS=$((ERRORS + 1))
|
||||
fi
|
||||
else
|
||||
# Linux — apt / yum / dnf
|
||||
INSTALL_OK=0
|
||||
if command -v apt-get &>/dev/null; then
|
||||
info "apt로 Temurin JDK 21 설치 중..."
|
||||
if sudo apt-get update -qq && sudo apt-get install -y temurin-21-jdk 2>/dev/null; then
|
||||
INSTALL_OK=1
|
||||
else
|
||||
# Adoptium 저장소 추가 후 재시도
|
||||
info "Adoptium 저장소 추가 중..."
|
||||
sudo mkdir -p /etc/apt/keyrings
|
||||
curl -fsSL https://packages.adoptium.net/artifactory/api/gpg/key/public | sudo tee /etc/apt/keyrings/adoptium.asc >/dev/null
|
||||
echo "deb [signed-by=/etc/apt/keyrings/adoptium.asc] https://packages.adoptium.net/artifactory/deb $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/adoptium.list >/dev/null
|
||||
if sudo apt-get update -qq && sudo apt-get install -y temurin-21-jdk; then
|
||||
INSTALL_OK=1
|
||||
fi
|
||||
fi
|
||||
elif command -v yum &>/dev/null; then
|
||||
info "yum으로 Temurin JDK 21 설치 중..."
|
||||
if sudo yum install -y temurin-21-jdk 2>/dev/null; then
|
||||
INSTALL_OK=1
|
||||
else
|
||||
info "Adoptium 저장소 추가 중..."
|
||||
cat <<-REPO | sudo tee /etc/yum.repos.d/adoptium.repo >/dev/null
|
||||
[Adoptium]
|
||||
name=Adoptium
|
||||
baseurl=https://packages.adoptium.net/artifactory/rpm/rhel/\$releasever/\$basearch
|
||||
enabled=1
|
||||
gpgcheck=1
|
||||
gpgkey=https://packages.adoptium.net/artifactory/api/gpg/key/public
|
||||
REPO
|
||||
if sudo yum install -y temurin-21-jdk; then
|
||||
INSTALL_OK=1
|
||||
fi
|
||||
fi
|
||||
else
|
||||
fail "패키지 관리자를 찾을 수 없음 — https://adoptium.net 에서 JDK 21을 수동 설치하세요"
|
||||
ERRORS=$((ERRORS + 1))
|
||||
fi
|
||||
|
||||
# 설치 결과 확인
|
||||
if [ $INSTALL_OK -eq 1 ]; then
|
||||
if command -v java &>/dev/null; then
|
||||
JAVA_VER=$(java -version 2>&1 | head -1 | awk -F '"' '{print $2}' | cut -d. -f1)
|
||||
if [ "$JAVA_VER" -ge 21 ] 2>/dev/null; then
|
||||
ok "JDK 21 설치 완료"
|
||||
else
|
||||
fail "JDK 설치 후에도 버전이 21 미만입니다"
|
||||
ERRORS=$((ERRORS + 1))
|
||||
fi
|
||||
else
|
||||
fail "JDK 설치 후 java 명령어를 찾을 수 없습니다"
|
||||
ERRORS=$((ERRORS + 1))
|
||||
fi
|
||||
elif [ $INSTALL_OK -eq 0 ] && command -v apt-get &>/dev/null || command -v yum &>/dev/null; then
|
||||
fail "JDK 설치 실패 — 수동으로 JDK 21을 설치하세요"
|
||||
ERRORS=$((ERRORS + 1))
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
|
||||
# ---------- 2. Git ----------
|
||||
@@ -57,8 +144,8 @@ echo "4. Gradle 빌드"
|
||||
if [ $ERRORS -gt 0 ]; then
|
||||
fail "사전 요구사항 미충족 — 빌드 건너뜀"
|
||||
else
|
||||
chmod +x gradlew
|
||||
if ./gradlew build -x test --console=plain -q; then
|
||||
chmod +x "$PROJECT_ROOT/gradlew"
|
||||
if "$PROJECT_ROOT/gradlew" build -x test --console=plain -q; then
|
||||
ok "BUILD SUCCESSFUL"
|
||||
else
|
||||
fail "빌드 실패"
|
||||
@@ -68,8 +155,8 @@ fi
|
||||
|
||||
# ---------- 5. .env 템플릿 ----------
|
||||
echo "5. 환경변수 파일"
|
||||
if [ ! -f .env ]; then
|
||||
cat > .env << 'ENVEOF'
|
||||
if [ ! -f "$PROJECT_ROOT/.env" ]; then
|
||||
cat > "$PROJECT_ROOT/.env" << 'ENVEOF'
|
||||
# ===== WBX Spring Core — 환경변수 =====
|
||||
# 이 파일을 환경에 맞게 수정하세요.
|
||||
|
||||
@@ -119,7 +206,7 @@ LOG_PATH=/opt/wbx-app/logs/app.log
|
||||
# AWS_ACCESS_KEY=
|
||||
# AWS_SECRET_KEY=
|
||||
ENVEOF
|
||||
chmod 600 .env
|
||||
chmod 600 "$PROJECT_ROOT/.env"
|
||||
ok ".env 생성 완료 (값을 수정하세요)"
|
||||
else
|
||||
warn ".env 이미 존재 — 건너뜀"
|
||||
@@ -127,7 +214,7 @@ fi
|
||||
|
||||
# ---------- 6. 디렉토리 ----------
|
||||
echo "6. 디렉토리 생성"
|
||||
mkdir -p logs uploads backup
|
||||
mkdir -p "$PROJECT_ROOT/logs" "$PROJECT_ROOT/uploads" "$PROJECT_ROOT/backup"
|
||||
ok "logs/ uploads/ backup/"
|
||||
|
||||
# ---------- 결과 ----------
|
||||
|
||||
새 Issue에서 참조
사용자 차단