선 조치 후 분석

Maven과 Nexus 개념 그리고 필요성은? 본문

ETC/IT Knowledge

Maven과 Nexus 개념 그리고 필요성은?

JB1104 2025. 2. 14. 14:55
728x90
반응형
SMALL

넥서스(Nexus)

  • Apach Maven 프로젝트와 관련된 중앙 저장소 관리 시스템으로, Nexus는 이 프로젝트에 필요한 종속성(의존성)
    파일을 저장하고 관리하는 중앙 저장소 역할
소프트웨어 저장소 관리 시스템

소프트웨어 개발에서 사용되는 다양한 라이브러리, 의존성 및 아티팩트를 효율적으로 관리하고 저장하는 데 사용 Maven, npm, Docker, 등 다양한 패키지 형식을 지원, Proxy Repository, Host Repository, 보안 기능 등 포함

Maven
-Apach 재단에서 개발한 자바 프로젝트를 위한 강력한 빌드 및 프로젝트 관리 도구

1. 프로젝트 생명주기 관리 : 프로젝트의 전체적인 라이프사이클을 관리
2. 의존성 관리 : 필요한 라이브러리와 그 의존성을 자동으로 다운로드 및 관리
3. 표준화된 프로젝트 구조 : 일관된 프로젝트 구조를 제공하여 개발자 간 협업을 용이하게 해 줌
4. 빌드 자동화 : 소스 코드 컴파일, 테스트, 패키징, 배포 등의 과정을 자동화
5. 플러그인 기반 : 다양한 플러그인을 통해 기능을 확장

Maven의 핵심 파일은 pom.xml이며, 이를 통해 프로젝트의 설정, 의존성, 빌드 과정 등을 정의
Maven의 빌드 과정은 주로 Compile, Test, Package 순서로 진행

*compile : src/main/java 디렉터리 아래의 모든 소스 코드가 컴파일

Nexus (Repository Manager)

  • Sonatype에서 만든 저장소 관리자 프로젝트
  • 다양한 format의 사설 저장소를 만들 수 있으며 메인 저장소를 Cache 할 수 있는 기능 또한 제공하여
    저장소를 관리할 수 있도록 도와주는 관리자 도구
  • Maven에서 사용할 수 있는 가장 널리 사용되는 무료 저장소

 

필요성

  1. 회사/단체의 화이트 리스트로 인해 외부 레포지토리에 접속하기 어려운 경우에 Proxy의 역할
  2. 비상시 외부 인터넷이 느리거나 레포지토리가 다운되는 등 여러 상황에서도 빠르게 대응 가능
  3. Maven에 올라와 있지 않은 자료들을 효율적으로 관리 가능
  4. 다운로드한 Dependency는 로컬에 저장되어서 협업 시, 다른 PC에도 설치 필요
  5. 서버에도 동일한 설정들을 해주어야 하므로, 서버 구조가 복잡할수록 잔업이 증가
  6. 예외 파일로 인한 설정이 줄어들어 전체적인 일관성이 증가
  7. 개발팀에서 사용하는 공통 라이브러리들을 공유 가능
  8. 특정 솔루션을 사용하기 위한 3rd Party 라이브러리를 관리 가능


기능

  1. 의존성 관리
    ▶ Maven 프로젝트에서 필요한 외부 라이브러리 및 플러그인 관리 및 다운 가능
  2. 중앙 저장소
      Nexus는 중앙 위치에 위치하여 여러 프로젝트에서 공유할 수 있는 중앙 저장소 역할
  3. 로컬 캐시
      Maven 빌드 작업을 향상하기 위해 로컬 캐시를 제공하여 반복적인 다운로드를 피함
  4. 보안 및 권한 관리
      사용자에게 적절한 접근 권한 부여 및 저장소 보안관리
  5. 프록시 기능
      원격 Maven 저장소로부터 필요한 의존성 다운로드할 때 프록시 기능을 통해 속도 향상 가능
  6. 그룹화
      여러 저장소를 그룹화하여 하나의 가상 저장소로 사용 가능
728x90
반응형
LIST