Nexus란
Apache Maven 프로젝트와 관련된 중앙 저장소 관리 시스템으로,nexus는 이 프로젝트에 필요한 종속성(의존성) 파일을 저장하고 관리하는 중앙 저장소 역할을 한다.
(Maven은 Java 기반 프로젝트를 빌드하고 관리하기 위한 도구)
소프트웨어 저장소 관리 시스템,
소프트웨어 개발에서 사용되는 다양한 라이브러리, 의존성 및 아티팩트를 효율적으로 관리하고 저장하는데 사용된다.
(Maven, npm, Docker, NuGet 등 다양한 패키지 형식을 지원,
Proxy Repository, Host Repository, 보안 기능 등을 포함한다.)
- Sonatype에서 만든 저장소 관리자 프로젝트: Nexus Repository Manager
- 다양한 format의 사설 저장소를 만들 수 있으며 메인 저장소를 Cache할 수 있는 기능 또한 제공하여 저장소를 관리할 수 있도록 도와주는 관리자 도구
- Maven에서 사용할 수 있는 가장 널리 사용되는 무료 저장소
Nexus의 필요성
사설 리포지토리가 필요한 이유
- 회사/단체의 화이트 리스트로 인해 외부 레포지토리에 접속하기 어려운 경우 Proxy의 역할을 한다.
- 비상시 외부 인터넷이 느리거나 레포지토리가 다운되는 등 여러 상황에서도 빠르게 받을 수 있다.
- 현재 Maven에 올라와 있지 않은 자료들을 효율적으로 관리할 수 있다.
- 한 번 다운로드 받은 dependency는 로컬에 저장되어서 협업 시 다른 PC에도 설치해야 한다.
- 서버에도 동일한 설정들을 해주어야 하므로 서버 구조가 복잡할 수록 잔업이 증가하게 된다.
- 예외 파일로 인한 설정이 줄어들어 전체적인 일관성이 증가하게 된다.
- 개발팀에서 사용하는 공통 라이브러리들을 공유할 수 있다.
- 특정 솔루션을 사용하기 위한 3rd Party 라이브러리를 관리할 수 있다.
Nexus 기능
- 의존성 관리
Maven 프로젝트에서 필요한 외부 라이브러리 및 플러그인 관리 및 다운 가능
- 중앙 저장소
Nexus는 중앙 위치에 위치하여 여러 프로젝트에서 공유할 수 있는 중앙 저장소 역할을 한다.
- 로컬 캐시
Maven 빌드 작업을 향상시키기 위해 로컬 캐시를 제공하여 반복적인 다운로드를 피할 수 있다.
- 보안 및 권한 관리
사용자에게 적절한 접근 권한 부여 및 저장소 보안 관리
- 프록시 기능
원격 Maven 저장소로부터 필요한 의존성 다운로드할 때 프록시 기능을 통해 속도 향상 가능
- 그룹화
여러 저장소를 그룹화하여 하나의 가상 저장소로 사용할 수 있다.