Maven 프로젝트 시에 Maven central repository에서 제공하는 다양한 장점에도 불구하고 사용성 측면에서 내부 repository manager의 사용을 권고하고 있다. 실제 기업 또는 organization에서는 하나 이상의 central repository를 제공 하고 있으며 Nexus는 이런 여러 개의 외부 리포지토리를 Proxy 개념으로 연결해서 효율적으로 내부 개발자들에게 virtual한 하나의 repository 연결 포인트를 제공한다. 실제 내부 개발자들은 Nexus 리포지토리만을 바라보고 필요한 artifact들을 요청한다.
Maven을 사용할 때 유용한 오픈소스인 Nexus의 사용법에 대해 설명하고자 한다.
Nexus는 Maven repository manager로 프로젝트 또는 기업에서 필요로 하는 내부 리포지토리 구성을 위한 도구이다.
내려 받은 nexus-webapp-1.3.3.war 설치 파일을 대상 WAS에 배포 한다.
Context Root를 nexus로 설정하기 위하여 war 파일의 이름을 nexus.war 파일로 변경한다. - 톰캣을 사용한 예
Nexus 메인 화면
Maven 설정 파일인 settings.xml 파일의 <servers> 및 <mirrors> 부분에 Nexus 연결 설정을 추가한다.<servers> Tag - 특정 서버에 접속하기 위한 인증 정보들의 list
<servers> <server> <id>release</id> <username>deployment</username> <password>**********</password> </server> </servers>
✔ Nexus에서 설정한 배포 유저의 설정값으로 username과 password 값을 수정해야 한다.
<mirrors> Tag - 원격 리포지토리에서 artifact들을 다운로드 할 때 사용되는 mirror들의 리스트
<mirrors> <mirror> <id>nexus</id> <mirrorOf>central</mirrorOf> <url>http://[domain]:[port]/nexus/content/repositories/releases/</url> </mirror> <mirror> <id>snapshots</id> <mirrorOf>public-snapshots</mirrorOf> <url>http://[domain]:[port]/nexus/content/groups/public-snapshots/</url> </mirror> </mirrors>
✔ Nexus를 설치한 경로로 URL 설정을 바꾸어 준다.
생성한 패키지(war, jar 등)를 배포하기 위한 대상 서버를 정의한다.
<distributionManagement> <!-- use the following if you're not using a snapshot version. --> <repository> <id>release</id> <url>http://[domain]:[port]/nexus/content/repositories/releases/</url> </repository> <!-- use the following if you ARE using a snapshot version. --> <snapshotRepository> <id>snapshots</id> <url>http://[domain]:[port]/nexus/content/repositories/snapshots/</url> </snapshotRepository> </distributionManagement>
✔ Nexus를 설치한 경로로 URL 설정을 바꾸어 준다.
인터넷 브라우저를 통해 설치한 Nexus의 웹 화면을 열고 오른쪽 상단의 Log in 링크를 클릭한다. 기본 세팅은 admin/admin123으로 하나의 계정만을 제공하고 있으며 접속한 후 보안 설정을 통해 비밀번호 변경 작업을 수행한다.
Nexus는 다수의 central repository들을 관리할 수 있으며 Proxy 개념을 통해 개발자들에게 보다 쉬운 repository 연동 편의성을 제공한다.3.1 메뉴의 Add 버튼을 클릭하고 Proxy 리포지토리를 선택한다.
3.2 추가할 repository의 설정값을 입력한다.
프로젝트에서 사용하는 3rd party 라이브러리들이나 프로젝트에서 생성한 war, jar 등의 패키징된 Maven artifact들을 Nexus 리포지토리에 등록하여 사용한다.4.1 upload하기 위한 리포지토리 선택
3rd party 리포지토리 선택 후 오른쪽 마우스 메뉴의 Upload Artifact 메뉴를 선택한다.
4.2 Upload 하고자 하는 artifact 파일 및 pom.xml 파일을 설정한다.
Browser 버튼 클릭을 통해 개발자 PC에 위치한 upload할 파일을 탐색하여 지정할 수 있다.
개발자의 Maven 로컬 리포지토리에서 Nexus에 배포하고자 하는 artifact 파일 및 pom.xml 파일을 선택한다.
리포지토리 브라우징을 통해 새로 등록된 artifact을 확인한다.
3rd party 또는 프로젝트에서 생성한 artifact를 프로젝트에서 설정하기 위해서는 pom.xml에 dependency 정보를 설정해 주어야 한다. 설정할 artifact의 dependency 정보를 nexus 브라우징을 통해 확인할 수 있다.예) jeus artifact를 사용하기 위한 depencey 정보 확인하기
5.2. 오른쪽 마우스 클릭 후 download 메뉴를 선택하여 dependency 정보를 확인한다.
확인한 pom.xml 파일의 정보를 복사/붙여넣기를 통해 프로젝트의 pom.xml 파일에 선언하여 jeus 라이브러리를 사용한다.
프로젝트 내의 각 파트에서 생성한 maven artifact들을 nexus에 배포하고 다른 파트에서 배포된 artifact들을 참조해 프로젝트를 진행할 수 있다.