Sonatype Nexus #2 : 설정 및 maven 과 연결하기

Sonatype Nexus 를 설치 했다고 해서 바로 사설 리파지토리 기능을 하는건 아니다.

몇가지 설정을 쪼물쪼물 해줘야 된다.

사실 다른 자료들을 찾아보고 설치까지는 했는데 그 뒤 설정하는걸 설명안해주고 설치만 하면 다되는것 처럼 적혀 있어서 난 도대체 왜 안될까 하면서 Nexus 개후짐 이라고 결론을 내릴뻔 했다. 나의 무식때문에 만든다고 용써준 사람을 욕하다니.


관리자로 로그인 한 다음 왼쪽 메뉴중에 Repositories 를 클릭하면 디폴트로 등록된 리파지토리들 목록이 나온다.




먼저 목록중에 Public Repositoires 를 클릭하면 아래쪽에 상세내용이 나오는데 Configuration 탭으로 이동한다.


Ordered Group Repositories 에 디폴트로 여러개가 등록도 있을껀데 일단 Maven Central 만 남기고 다 빼버리자, 나중에 원하는걸 필요할때마다 맨들어서 추가해 주면 된다.

요부분에서도 그동안의 고정관념 때문에 살짝 삽질을 했는데, 나의 고정관념 상으로는 죠렇게 박스 두개가 있으면 오른쪽 박스가 당연히 선택할 대상들이 들어가는 박스라고 생각해서 아무리 설정을 해도 안되는 것이였다 -_-;

외국 사람들은 반대로 생각하나 보다 -_-;  아무튼 결론적으로 하나로 묶어줄 애들은 왼쪽 Ordered Group Repositories 에다 추가시켜주면 된다 -_-

죠렇게 해 준다음에 아래쪽에 Save 버튼을 눌러 저장을 해준다.





고 다음으로 설정할 것은 리파지토리 목록중에 Maven Central 을 설정하는 것이다. 역시 클릭하면 아래쪽에 상세화면이 나오는데 Configuration 탭으로 이동하자.


여기서 할일은 Download Remote Indexes 가 디폴트로 False 로 되 있을건데 고걸 True 로 바꿔준다음 Save!

Download Remote Indexes 가 True 로 되있으면, Remote Storage Location 으로 설정된 http://repo1.maven.org/maven2 에 접속해서 인덱스 파일을 받아와서 고 인덱스 파일이랑 똑같이 나의 서버에 인덱스를 맨들어 준다.

Save 를 하면 인덱스파일을 다운로드 받아 인덱스를 업데이트 하는 작업이 시작된다. 이 작업이 완료되면 리프레쉬를 한다음에, 상단의 탭중Browse Index 탭을 클릭해보면 전에 하나도 안보이던 목록들이 쪽 생성이 되 있을 것이다.



인덱싱하는 작업이 쪼매 오래 걸리는데 작업이 완료 됬는지 계속 작업중인지 볼려면 왼쪽 메뉴중 Administration > Scheduled Tasks 를 클릭해 보면 알수 있다.


이 메뉴는 현재 Nexus 에서 돌아가고 있는 Task 를 보거나 아니면 원하는 Task를 스캐쥴링 하도록 등록하는 메뉴인것 같다.

아무튼 Task 목록을 보면 Maven Central 리파지토리의 인덱스를 다운로드 받아서 인덱싱을 하는 작업이 진행중인것을 볼수 있다.

작업이 완료되면 목록에서 사라지는데, 상단의 리프레쉬 버튼을 클릭하다 보면 언젠가는 사라질 것이다. -_-;



인덱싱 작업이 완료되면 이제부터 정상적인 사설 리파지토리 기능을 수행할 수 있다.!!




인덱싱된 결과를 볼려면 Pubic Repositories 를 클릭한다음 Browse Index 탭을 클릭해 보자.


인덱싱을 하기전에는 안보이던 여러가지 목록들이 간지나게 쫙 펼쳐져 있다.

※ Browse Index 탭에 보여지는 것들은 내가 맨든 사설리파지토리로 제공가능한 디펜던시들이지 아직 나의 서버로 다운로드가 된 상태는 아니다.
※ 나의 서버로 누군가가 디펜던시를 요청하면 일단 최초로 proxy 대상 리파지토리에서 해당 디펜던시를 다운로드 받아 이후 요청부터 캐싱을 하게 된다
※  현재 다운로드 받아 캐싱하고 있는 디펜던시들을 볼려면 Browse Storage 탭을 클릭해 보면 된다.





여기까지만 하면 일단 설정을 대충 다 끝났고 maven 에서 나의 서버를 바라보게 설정만 해주면 된다.

위 스크린샷에서 보면 리파지토리 목록 왼 오른쪽에 있는 Repository Path를 요렇게 pom.xml 파일의 repository 로 설정해 주거나 바꿔주면 된다.

많은 현재 디폴트로 등록된 리파지토리들이 많이 있지만 이중에서 다른 리파지토리들을 하나로 묶어주는 group 타입의 public 리파지토리를 메이븐에서 바라보도록 설정하자~

<repositories>
	<repository> 
		<id>central</id>
		<url>http://127.0.0.1:8080/content/groups/public</url>
		<releases><enabled>true</enabled></releases>
		<snapshots><enabled>true</enabled></snapshots>
	</repository>
</repositories>

<pluginRepositories>
	<pluginRepository>
		<id>central</id>
		<url>http://127.0.0.1:8080/content/groups/public</url>
		<releases><enabled>true</enabled></releases>
		<snapshots><enabled>true</enabled></snapshots>
	</pluginRepository>
</pluginRepositories>


Nexus 설명서를 보면 maven 의 settings.xml 파일인가 고걸 수정하게 하던데 그러면 다른 개발자들도 settings.xml 을 귀찮게 수정해야 하기 때문에 나는 svn으로 공유되는 pom.xml 파일을 수정했다.


아무튼 요렇게 한 후 나의 서버가 잘 돌아가나 테스트를 해보기 위해 pom.xml 파일에 디펜던시를 아무거나 하나 추가해 보자.
<dependency>
	<groupId>abbot</groupId>
	<artifactId>abbot</artifactId>
	<version>0.12.3</version>
</dependency>



음~ 잘되는 것 같다. 확실히 확인하기 위해서 위에서 설명했던 현재 캐싱된 디펜던시들을 보여주는 Browse Storage 탭을 클릭해 보면 pom.xml 파일에 추가했던 abbot 뭐시기가 캐싱된 것을 확인할 수 있다.



지금까지 한 설정은 딸랑 maven central 리파지토리만 바라보도록 설정했는데, 필요에 따라 다른 외부 리파지토리를 proxy 타입으로 추가 시킨다음

하나로 묶어주는 기능을 하는 group 타입의 Public Repositories 에다 포함 시켜주고 maven 에서는 이 public 리파지토리만 바라보도록 하면

pom.xml 파일에 추가적으로 <repository/> 를 추가할 필요도 없고 한번 캐싱된건 나의 서버에서 빠르게 다운로드 받을 수 있을 것이다.




이건 기본적인 사설 리파지토리 기능이고, 다음 포스트에서는 이렇게 맨들걸 쪼매 더 활용할 수 있도록 이것저것 다른 설정들을 쪼물거려 보겠다.