공공부하자개발 · 영어 학습 노트
자바
실무 확장Excel · 파일 업로드 · DB 연동0/22 완료
  • 01Excel(XLSX) 구조와 순수 JDK로 읽기/쓰기
  • 02Apache POI로 Excel 업로드/다운로드
  • 03파일 업로드/다운로드 서버 (HttpServer)
  • 04JDBC 기초와 트랜잭션 (H2)
  • 05MyBatis 어노테이션 매퍼로 쿼리 연동
  • 06MyBatis XML 매퍼 · Oracle 방언 · PageHelper · Spring Boot
  • 07REST API 서버와 JSON
  • 08Vue 3 SPA 와 Java 서버 연동
  • 09@Scheduled 운영
  • 10로깅 실무: 레벨·계층, MDC 추적, 예외·성능, 마스킹, 롤링, JSON 로그
  • 11외부 API 연동
  • 12테스트 실무
  • 13암호화·개인정보 보호
  • 14인코딩·한글 실무
  • 15@Transactional 심화
  • 16긴 작업 비동기 처리와 진행률
  • 17SFTP·FTP 파일 연계
  • 18로컬 캐시와 @Cacheable
  • 19메일·알림 발송
  • 20웹 보안 체크리스트
  • 21빌드 도구와 폐쇄망 의존성 반입
  • 22성능 측정: p50·p95·p99, 측정 계층, JFR, JMH 함정, 자체 부하 테스트, 병목 순위
사이트 소개개인정보처리방침연락처
© 2026 공부하자
홈 › 실무 확장 › 21 / 22

빌드 도구와 폐쇄망 의존성 반입

Maven 좌표·범위·충돌, 로컬 저장소 반입, 사내 미러, 재현 가능한 빌드
섹션 7진행 0 / 22
1왜 배우는가2핵심 원리3코드 예제4응용 변형 예제5자주 하는 실수 (Tip)6연습 문제7정리‹ 이전다음 ›

3. 코드 예제

폴더는 java-src/extension/21_build_offline 입니다. Main.java 는 빌드 도구 없이도, mvn package 로 만든 jar 로도 실행됩니다.

powershell
cd java-src\extension\21_build_offline
C:\project\jdk-21.0.8\bin\javac -encoding UTF-8 Main.java
C:\project\jdk-21.0.8\bin\java -Dstdout.encoding=UTF-8 Main   # 약 1초

Main.java — 실행 환경과 클래스패스 확인

java
// 클래스패스 항목을 순회해 지금 어떤 jar 가 잡혀 있는지 보여준다
String cp = System.getProperty("java.class.path", "");
String[] entries = cp.split(java.io.File.pathSeparator);
for (String e : entries) {
    System.out.println(" - " + e);
}

실행 결과

text
=== 실행 환경 정보 ===
클래스: Main
패키지: null
java.version: 21.0.8
file.encoding: UTF-8

=== 클래스패스 항목 ===
 - .

javac 로 직접 컴파일하면 클래스패스가 현재 폴더(.) 하나뿐입니다. mvn package 로 만든 fat jar 로 실행하면 이 목록이 BOOT-INF/lib 안의 jar 수만큼 늘어납니다.

import-jars.sh — 반입 jar 검증

powershell
export PATH="/usr/bin:/mingw64/bin:$PATH"   # Git Bash 명령 앞 필수
bash import-jars.sh ../../lib

.sha256 사이드카가 있으면 sha256sum 으로 대조하고, 없으면 "미검증"만 표시합니다. 대조 결과가 다르면 종료 코드 1 로 끝나 CI 파이프라인에서 실패로 감지할 수 있습니다.

text
JAR                                      크기(byte) 상위그룹     검증
mybatis-3.5.19.jar                          1819063 mybatis      미검증
poi-5.3.0.jar                                2979181 poi          미검증

java-src/lib 에는 아직 .sha256 파일을 두지 않아 전부 미검증으로 나옵니다. 실제 반입 심사에서는 인터넷 PC에서 받은 직후 sha256sum *.jar > 목록.sha256 형태로 사이드카를 만들어 함께 옮깁니다.

예제 직접 실행

아래 폴더를 JDK 21 로 컴파일하고 실행합니다. 외부 jar 를 쓰는 레슨은 java-src/lib 를 클래스패스에 넣습니다.

cd java-src\extension\21_build_offline
javac -encoding UTF-8 *.java && java Main

:: 외부 jar 가 필요한 레슨
javac -encoding UTF-8 -cp "..\..\lib\*;." *.java && java -cp "..\..\lib\*;." Main
코드 예제
  • Main.java — 실행 환경과 클래스패스 확인
  • 실행 결과
  • import-jars.sh — 반입 jar 검증
이전 섹션2 핵심 원리3 / 7다음 섹션4 응용 변형 예제