서버/CI 및 CD

[CI/CD 서버 구축 #4] 폐쇄망 환경에서 오픈소스 라이브러리를 Nexus에 업로드하는 3가지 방법

jineddy 2025. 4. 23. 11:30
728x90

기업 내부망이나 보안 상의 이유로 인터넷 접속이 제한된 환경에서도 개발에 필요한 오픈소스 라이브러리를 활용해야 하는 경우가 많습니다. 이럴 때 Sonatype Nexus Repository Manager를 이용해 외부 라이브러리를 내부망으로 안전하게 가져오는 3가지 주요 방법을 소개합니다.

설치에 관해 궁금하시면 이전 글인 [이 글]을 참고 하시기 바랍니다.

 

1. 프록시 리파지토리 등록 (인터넷 가능 환경에서 미리 캐시)

Nexus는 외부 저장소를 프록시(Proxy) 리파지토리로 설정하여 필요한 라이브러리를 자동으로 가져오고 로컬에 캐시할 수 있습니다. 인터넷이 가능한 세팅 초기 단계에서 이 방법을 활용하면 수많은 라이브러리를 자동으로 확보할 수 있습니다.

설정 방법

  • Nexus Repository Manager 접속
  • Repositories > Create Repository
  • maven2(proxy) 선택

Repository 생성 중 Recipe 선택화면

 

Repository 생성 상세화면

이후에는 Nexus가 외부에서 받아온 라이브러리를 내부망에서 캐시 형태로 지속 활용할 수 있습니다.

 

2. Nexus UI를 통한 수동 업로드 (인터넷 불가 환경에서 소량 업로드에 적합)

직접 Nexus의 웹 UI를 통해 .jar 파일을 업로드하는 방식입니다. 적은 양의 라이브러리를 빠르게 추가할 때 효과적이며 설정도 간단합니다.

  1. Browse > Upload 메뉴로 이동
  2. maven-releases 저장소 선택
  3. 파일 업로드 및 라이브러리 정보 입력
    • Group ID: com.oracle
    • Artifact ID: ojdbc8
    • Version: 4.0
    • Extension: jar

라이브러리 업로드 Repository 선택화면

 

라이브러리 파일 업로드 정보 입력화면

소규모 프로젝트나 임시적인 라이브러리 등록에 적합합니다.

 

3. 스크립트를 이용한 메이븐 업로드 (폐쇄망 대량 업로드에 최적화)

오프라인 환경에서 수많은 .jar 파일을 한번에 Nexus에 업로드해야 한다면, Maven의 deploy:deploy-file 기능과 배치 스크립트를 사용하는 것이 가장 효율적입니다.

스크립트 예시

@echo off
setlocal

:: Nexus 서버 정보 설정
set NEXUS_URL=http://127.0.0.1:8081/repository/maven-releases/
set REPO_ID=admin

call mvn deploy:deploy-file ^
 -DgroupId=com.oracle ^
 -DartifactId=ojdbc8 ^
 -Dversion=4.0 ^
 -Dpackaging=jar ^
 -Dfile=D:\ojdvc-8.jar ^
 -DrepositoryId=%REPO_ID% ^
 -Durl=%NEXUS_URL%

echo "모든 라이브러리 업로드 완료!"
endlocal

대량 업로드가 필요하고 자동화가 중요한 상황에서는 이 방법이 가장 추천됩니다.

위 예시는 Windows 에서 사용 가능한 .bat 파일 예시 입니다.

 

마무리

폐쇄망에서의 개발 환경 구축은 초기 설정이 매우 중요합니다. Nexus를 활용하면 오픈소스 라이브러리를 효율적으로 관리할 수 있으며, 환경에 따라 프록시, UI 수동 업로드, 스크립트 자동화 등 다양한 방식으로 유연하게 대응할 수 있습니다.

 

관련글

[리눅스/Rocky] - [CI/CD 서버 구축 #1] Rocky Linux에 Jenkins 설치 (.war 파일 기반, Java 17)

 

[CI/CD 서버 구축 #1] Rocky Linux에 Jenkins 설치 (.war 파일 기반, Java 17)

CI/CD 파이프라인을 구축할 때 가장 널리 사용되는 도구 중 하나인 Jenkins를 Rocky Linux 환경에 설치하는 방법을 정리합니다.이번 글에서는 .war 파일을 직접 실행하는 방식으로 설치하며, Java 17 환경

jineddy.tistory.com

[리눅스/Rocky] - [CI/CD 서버 구축 #2] Rocky Linux에 Nexus 설치 하기

 

[CI/CD 서버 구축 #2] Rocky Linux에 Nexus 설치 하기

Nexus Repository Manager는 사내 CI/CD 환경에서 빌드 결과물(라이브러리, 패키지 등)을 저장·배포하는 데 사용됩니다.이 글에서는 Rocky Linux 서버에 Nexus 3.x 버전 설치를 단계별로 정리해보겠습니다.SI

jineddy.tistory.com

[리눅스/Rocky] - [CI/CD 서버 구축 #3] SSH 공개키 방식 로그인 설정 방법 (Jenkins 배포 연동용)

 

[CI/CD 서버 구축 #3] SSH 공개키 방식 로그인 설정 방법 (Jenkins 배포 연동용)

CI/CD 파이프라인에서 Jenkins를 사용해 자동 배포를 구성할 때, 보안성과 편의성을 위해 SSH 공개키 기반 로그인 방식을 설정하는 것이 좋습니다.이번 글에서는 **리눅스 서버(dev 계정)**에 SSH 공개

jineddy.tistory.com

[개발/Java] - [CI/CD 서버 구축 #5] Maven deploy 시 자동 생성된 pom.xml로 인한 문제와 해결법

 

[CI/CD 서버 구축 #5] Maven deploy 시 자동 생성된 pom.xml로 인한 문제와 해결법

폐쇄망 환경에서 mvn deploy:deploy-file 명령어로 외부 라이브러리를 Nexus Repository에 수동 업로드할 때, 종종 발생하는 문제가 있습니다. 바로 자동 생성된 pom.xml이 실제 배포된 라이브러리의 메타 정

jineddy.tistory.com

 

728x90