내부망 빌드 스크립트 추가: Gradle 없이 JDK만으로 빌드 지원

- build-internal.sh 및 build-internal.bat 생성
- 내부망 빌드 가이드 문서(BUILD-INTERNAL.md) 추가
This commit is contained in:
Rinjae
2026-07-24 15:57:35 +09:00
parent 2dc31a16d7
commit c86c980b43
3 changed files with 122 additions and 0 deletions
+34
View File
@@ -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 값으로 자동 기록된다.
+48
View File
@@ -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=<VERSION
if exist %OUT% rmdir /s /q %OUT%
mkdir %OUT%\stub-classes
mkdir %OUT%\main-classes
rem JDK 9+ 면 --release 8 로 Java 8 타깃 고정, JDK 8 이면 옵션 없이 컴파일
set RELEASE_OPT=
javac --release 8 -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
+40
View File
@@ -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" <<EOF
Manifest-Version: 1.0
Implementation-Title: damo-manager
Implementation-Version: $VERSION
Built-By: damo-manager internal build
Main-Class: com.eactive.ext.djb.DamoCli
EOF
jar cfm "$OUT/damo-manager.jar" "$OUT/MANIFEST.MF" -C "$OUT/main-classes" .
echo ""
echo "빌드 완료: $OUT/damo-manager.jar"