diff --git a/scripts/BUILD-INTERNAL.md b/scripts/BUILD-INTERNAL.md new file mode 100644 index 0000000..ec5b3c8 --- /dev/null +++ b/scripts/BUILD-INTERNAL.md @@ -0,0 +1,34 @@ +# damo-manager 내부망 빌드 안내 + +이 번들은 소스코드와 빌드 스크립트만 포함한다. 인터넷·Gradle 없이 **JDK 만으로** 빌드된다. + +## 요구사항 + +- JDK 8 이상 (`javac`, `jar` 가 PATH 에 있어야 함) +- JDK 9 이상이면 스크립트가 자동으로 `--release 8` 을 적용해 Java 8 타깃으로 컴파일한다. + +## 빌드 + +```sh +# Linux / Unix +sh build-internal.sh + +# Windows +build-internal.bat +``` + +산출물: `build-internal/damo-manager.jar` + +## 검증 + +```sh +java -jar build-internal/damo-manager.jar sha256 test +``` + +bypass 모드(기본값)로 동작하면 정상. 운영 모드는 `-Ddamo-manager.enabled=true` + scpdb 라이브러리 필요 (상세는 README.md 참고). + +## 참고 + +- `src/stub/java` 의 scpdb 가짜 시그니처는 컴파일 통과 전용이며 jar 에 포함되지 않는다. +- 내부망에 Gradle 이 설치되어 있다면 `gradle clean build` 도 가능하다. 이 프로젝트는 외부 라이브러리 의존성이 없어 저장소(인터넷) 접근 없이 빌드된다. 산출물은 `build/libs/damo-manager.jar`. +- `VERSION` 파일은 번들 생성 시 `build.gradle` 의 version 값으로 자동 기록된다. diff --git a/scripts/build-internal.bat b/scripts/build-internal.bat new file mode 100644 index 0000000..cafa67a --- /dev/null +++ b/scripts/build-internal.bat @@ -0,0 +1,48 @@ +@echo off +rem damo-manager 내부망 빌드 스크립트 — JDK 만 필요 (Gradle 불필요) +rem 사용법: build-internal.bat +rem 산출물: build-internal\damo-manager.jar +setlocal +cd /d "%~dp0" + +set OUT=build-internal +set VERSION=1.0.0 +if exist VERSION set /p VERSION=nul 2>&1 && set RELEASE_OPT=--release 8 + +rem 1. stub 컴파일 (scpdb 가짜 시그니처 — 컴파일 통과 전용, jar 에 포함되지 않음) +dir /s /b src\stub\java\*.java > %OUT%\stub-sources.txt +javac %RELEASE_OPT% -encoding UTF-8 -d %OUT%\stub-classes @%OUT%\stub-sources.txt +if errorlevel 1 goto :fail + +rem 2. main 컴파일 (stub 을 classpath 로 사용 — Gradle 의 compileOnly 와 동일) +dir /s /b src\main\java\*.java > %OUT%\main-sources.txt +javac %RELEASE_OPT% -encoding UTF-8 -cp %OUT%\stub-classes -d %OUT%\main-classes @%OUT%\main-sources.txt +if errorlevel 1 goto :fail + +rem 3. jar 패키징 (main 클래스만 포함) +( +echo Manifest-Version: 1.0 +echo Implementation-Title: damo-manager +echo Implementation-Version: %VERSION% +echo Built-By: damo-manager internal build +echo Main-Class: com.eactive.ext.djb.DamoCli +) > %OUT%\MANIFEST.MF + +jar cfm %OUT%\damo-manager.jar %OUT%\MANIFEST.MF -C %OUT%\main-classes . +if errorlevel 1 goto :fail + +echo. +echo Build OK: %OUT%\damo-manager.jar +exit /b 0 + +:fail +echo Build FAILED +exit /b 1 diff --git a/scripts/build-internal.sh b/scripts/build-internal.sh new file mode 100644 index 0000000..b379e11 --- /dev/null +++ b/scripts/build-internal.sh @@ -0,0 +1,40 @@ +#!/bin/sh +# damo-manager 내부망 빌드 스크립트 — JDK 만 필요 (Gradle 불필요) +# 사용법: sh build-internal.sh +# 산출물: build-internal/damo-manager.jar +set -e +cd "$(dirname "$0")" + +OUT=build-internal +VERSION=$(cat VERSION 2>/dev/null || echo 1.0.0) + +rm -rf "$OUT" +mkdir -p "$OUT/stub-classes" "$OUT/main-classes" + +# JDK 9+ 면 --release 8 로 Java 8 타깃 고정, JDK 8 이면 옵션 없이 컴파일 +RELEASE_OPT= +if javac --release 8 -version >/dev/null 2>&1; then + RELEASE_OPT="--release 8" +fi + +# 1. stub 컴파일 (scpdb 가짜 시그니처 — 컴파일 통과 전용, jar 에 포함되지 않음) +find src/stub/java -name '*.java' > "$OUT/stub-sources.txt" +javac $RELEASE_OPT -encoding UTF-8 -d "$OUT/stub-classes" @"$OUT/stub-sources.txt" + +# 2. main 컴파일 (stub 을 classpath 로 사용 — Gradle 의 compileOnly 와 동일) +find src/main/java -name '*.java' > "$OUT/main-sources.txt" +javac $RELEASE_OPT -encoding UTF-8 -cp "$OUT/stub-classes" -d "$OUT/main-classes" @"$OUT/main-sources.txt" + +# 3. jar 패키징 (main 클래스만 포함) +cat > "$OUT/MANIFEST.MF" <