Maven의 핵심개발자들이 만든 회사인 Sonatype의 m2eclipse에 이은 두번째 역작 Nexus 1.0이 릴리즈 됐다.

Maven을 성공적으로 사용하기 위해서 개인 또는 기업에게 꼭 필요한 것 두가지를 말하라면 자체적인 Parent/Abstract/Base POM을 만들어서 사용하라는 것과 기업 또는 팀에서 사용할 전용 Maven 리포지토리를 이용하는 것이라고 대답하겠다.

이 중에서 내부 Maven 리포지토리의 필요성에 대해서는 박재성님도 강조한 바 있고, Atlassian의 개발자 블로그에 실린 Maven Infrastructure에 관한 글에도 잘 나타나 있다.

 

Maven의 최대 약점은 부실한 Central Repository 관리에 있다. Maven2.0 초기부터 열심히 적용해서 AppFuse를 개발해온 Matt Raible이 제발 clean up좀 해줬으면 좋겠다고 블로그에서 여러번 호소한 적이 있을 정도로 Central의 악명은 높다. 관리체계나 검증방법, 등록과정이 어떻게 되는지는 잘 모르겠지만 최신 라이브러리가 Central에 등록되는데는 상당한 시간이 걸린다. 짜증날 정도로 허접하게 설정된 POM과 아직도 잘 지켜지지 않는 package naming rule도 마찬가지고. 그래서 많은 오픈소스 프로젝트나 기업들이 Central과는 별도로 자체적인 Maven 리포지토리를 만들어서 공개 또는 내부적으로 활용하고 있다.

잘 알려진 Central/Codehaus 이외의 공개 리포지토리로는 Atlassian, JBoss, SpringSource에서 공개운영하는 것들이 있다. 이런 리포지토지는 많이 사용되는 제품의 경우 빠르게 업데이트가 되고, 유용한 자체 개발 플러그인들이 등록되어있기 때문에 본격적으로 오픈소스 제품을 사용하는 프로젝트에 Maven을 적용할 경우 이용하지 않을 수 없다.

하지만 개발자 각자 또는 프로젝트 마다 이런 저런 리포지토리들의 설정을 복잡하게 해두고 관리하는 것은 불편한 일이다. 내 자리에서 잘 되는 빌드가 CI서버로 간다거나 다른 개발자 자리에서는 안되는 경우 리포지토리의 설정이 서로 다르기 때문일 가능성이 높다.

그래서 기업이나 프로젝트 팀의 전용 서버를 외부 리포지토리의 Proxy 개념으로 활용하면 매우 편리하다. Nexus와 같은 리포지토리툴은 여러개의 외부 리포지토리를 Proxy개념으로 연결해서 내부 개발자들에게는 Virtual한 하나의 release, snapshot URL 형태로 제공한다. 따라서 개발자들은 내부 리포지토리 설정 하나만으로도 충분하다. 필요한 추가 외부 리포지토리가 있으면 proxy 등록만 해주면 된다.

Proxy의 적용이 주는 또 한가지 장점은 다운로드 속도가 빠르다는 것이다. Maven의 transitive dependency는 깔끔하게 정의되지 않은 의존관계를 가진 POM을 만나게 되면 정체를 알 수 없는 엄청난 다운로드(그것도 같은 라이브러리의 여러개의 버전이 한꺼번에)가 일어난다. Central 서버가 그다지 빠르지 않을 뿐더러 Maven의 다운로딩 처리도 매우 느린 것으로 소문나 있다. 2.1 또는 3.0에서 개선될 것이라고 하지만 언제 나올지 기약이 없다. 그런 면에서 로컬의 proxy는 프록시가 원래 그렇듯이 아주 빠르게 라이브러리를 다운로딩 해준다. 한가지 문제는 snapshot의 업데이트인데 그건 적절한 서버 설정으로 해결봐야 할 듯.

 

내부 리포지토리의 또 한가지 필요성은 공개된 리포지토리에는 올라갈 수 없는 또는 올라가지 않은 라이브러리를 이용하고 싶은 경우이다. 라이센스 문제로 공개사이트에서 배포가 불가능한 SUN에서 제공하는 자바스펙 구현들(물론 별도 구현한 대체파일을 찾을 수는 있지만 번거롭다)을 포함해서 상용으로 구매한 라이브러리나 또는 내부적으로 개발해서 외부에 공개할 수 없는 것들은 전용 리포지토리에 직접 업로드해서 내부 개발자들에게만 공개한 형태로 사용되어질 수 있다. 내부 POM도 마찬가지로 서버에 등록이 되어있어야 할테고.

 

아무튼 이런 전용 Maven 리포지토리를 손쉽게 만들어 사용할 수 있도록 지원하는 여러 제품들이 있다. 한동안 Artifactory를 사용해왔는데 큰 불편 없었지만 종종 드러나는 작은 버그들과 서버의 불안정성 때문에 다른 대안이 없나 찾다가 Nexus를 발견했다. Maven 개발팀에 대한 불신이 큰 탓에 그쪽 동네서 만든 제품은 손도 대지 말자라고 생각하고 있었는데, Sonatype이라는 회사를 만든 이후로는 여러가지 좋은 제품과 문서들을 내놓고 있어서 인식이 180도 바뀌었다. The Definite Guide라는 문서도 지금까지 공개된 어떤 Maven 관련 책과 문서보다 뛰어난 Maven 가이드북이다. Eclipse 플러그인인 m2eclipse 역시 기대했던 이상의 편리한 기능과 안정성을 가지고 발전하고 있어서 Maven 적용 프로젝트의 필수 툴로 새롭게 떠오르고 있다. 또 하나 주목할 만한 것이 바로 Nexus이다.

Nexus는 Artifactory랑 비교해서 보면 기본 기능과 개념은 거의 비슷하다. 하지만 기능이 매우 뛰어나고 안정적일 뿐더러 관리자 UI 또한 사용하기 편리하게 ExtJs를 이용해서 만들어져있다.

또 하나의 장점은 인덱스의 활용이다. 리모트 리포지토리의 인덱스를 이용해서 필요한 라이브러리를 빠르게 검색할 수 있다. M2eclipse가 이 인덱스를 활용하기 때문에 Nexus의 도움을 받아서 인덱스를 업데이트 해가면서 필요한 라이브러리를 프로젝트에 쉽게 추가하는데도 적용할 수가 있다.

 

그 밖에 서버관리를 위한 여러가지 편리한 기능을 제공한다. 자세한 활용법은 The Definitive Guide에 나온 Nexus 챕터를 잘 읽어보면 도움이 될 것이다.

Related posts:

  1. Maven 3.0과 버전 포맷 문제
  2. Maven 다중 리포지토리와 버전 범위를 사용할 때의 주의점
  3. Maven의 새로운 가이드북 – Maven: The Definitive Guide
  4. Maven 재도전기 (1)
  5. Spring 3.0 (34) R-941 스프링의 Maven 지원정책은?
  6. Maven 의존관계 수렁에 빠지다
  7. Maven: The Definitive Guide 사라지다
  8. Maven settings.xml의 비밀번호 암호화
  9. Maven archetype 설정파일 자동생성기 – ArchetypeXmlWriter
  10. Ruby on Maven
  11. Maven POM에 attribute 사용하기 (1)
  12. Maven POM에 attribute 사용하기 (2)
  13. Project Irene 시작하다
  14. Maven과 OSGi(Spring)의 버전포맷 비호환 문제
  15. Maven의 version range를 사용할 때 주의할 점

Facebook comments:

to “Nexus Maven Repository 1.0 출시”

  1. That is a good tip especially to those fresh to the blogosphere. Brief but very accurate information Appreciate your sharing this one. A must read article!

  2. Really clear site, thank you for this post.

  3. With thanks, Valuable information! Price Of Arimidex Tablets

  4. Online Article Every so often in a while we choose blogs that we read. Listed below are the latest sites that we choose

  5. It’а†s truly a nice and useful piece of information. I’а†m satisfied that you shared this helpful information with us. Please stay us up to date like this. Thank you for sharing.

  6. Thanks a lot, Loads of tips.
    prinivil

  7. real cialis without a doctor prescription cialis price
    generic cialis available

  8. You made your position extremely nicely.! atomoxetin

  9. kamagra forum srpski
    kamagra 100 mg
    kamagra stores
    kamagra oral jelly
    the medical supply store kamagra

  10. Excellent posts. Thanks a lot! advair

Leave a Reply to JeffreyNal Cancel reply

(required)

(required)

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

© 2017 Toby's Epril Suffusion theme by Sayontan Sinha