홈 › 실무 확장 › 21 / 22

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

Maven 좌표·범위·충돌, 로컬 저장소 반입, 사내 미러, 재현 가능한 빌드
섹션 7진행 0 / 22

빌드 도구와 폐쇄망 의존성 반입 — Maven, pom.xml, ~/.m2 반입 절차

javac 로 파일 몇 개를 직접 컴파일하던 방식이 왜 한계에 부딪히는지 보고, Maven pom.xml 최소 구성과 인터넷 개발 PC에서 폐쇄망 RHEL 빌드 서버로 의존성 jar 를 안전하게 반입하는 절차를 정리합니다.

1. 왜 배우는가

이 사이트의 실무 확장 예제들은 javac *.java && java Main 또는 -cp "..\..\lib\*;." 로 실행됩니다. jar 몇 개를 폴더에 두고 클래스패스로 잡는 방식은 예제 하나짜리 실습에는 충분합니다. 하지만 실제 사내 프로젝트는 Spring Boot, MyBatis, 로깅 라이브러리까지 수십~수백 개의 jar 를 물고 들어옵니다.

의존성이 늘어나면 세 가지 문제가 생깁니다. 첫째, A 라이브러리가 쓰는 B 라이브러리(전이 의존성)까지 사람이 손으로 다 찾아 받아야 합니다. 둘째, 소스·테스트·리소스 폴더 구조가 프로젝트마다 제각각이면 신규 입사자가 매번 새로 배워야 합니다. 셋째, 컴파일·테스트·패키징 순서를 스크립트로 매번 새로 짜야 합니다.

Maven·Gradle 같은 빌드 도구는 이 세 가지를 표준화합니다. pom.xml 에 좌표만 적으면 전이 의존성까지 자동으로 받고, src/main/java·src/test/java 같은 표준 폴더 구조를 강제하며, mvn package 한 줄로 컴파일부터 실행 가능한 jar 생성까지 이어집니다. 문제는 이 자동 다운로드가 인터넷 접속을 전제로 한다는 점입니다.

폐쇄망 RHEL 빌드 서버는 외부 네트워크가 막혀 있어 mvn package 를 그냥 돌리면 의존성을 못 받아 실패합니다. 이 레슨은 인터넷이 되는 개발 PC에서 의존성을 미리 받아 ~/.m2/repository 를 통째로 반입하는 절차, 사내 미러(Nexus)를 쓰는 절차, jar 만 개별 반입하는 절차 세 가지를 비교하고 각각의 장단점을 정리합니다.