본문 바로가기

Better SW Development

[dW Review] 뜨거운 감자 Apache Maven

Apache Maven에 대해 모르고 있던 5가지 사항
http://www.ibm.com/developerworks/kr/library/j-5things13/index.html

우선 결론부터 말하자면, 위 글을 읽고 난 먼저 한숨이 나왔다. 메이븐을 이렇게까지 써야 하나.. 라는 생각이 들었다. 메이븐을 모르는 사람은 (당연하겠지만) 위 기사가 별로 도움이 안된다. 먼저 선행학습이 필요하다. 그런데 선행학습을 하더라도 메이븐에 대해 모르고 있던 5가지를 읽어서 해당 작업을 처리할 수는 있겠지만, 내 개인적으로는 느끼기엔 그건 메이븐으로 할 수 있다(Can Possible)이지 쉽게 할 수 있다(Easy Possible)은 아니라고 느꼈기 때문이다. 나중에 메이븐 학습후 다시 보게 되더라도 이 부분은 조금 고민해 보길 바란다.

사실 내가 몇 년전 부터 학습하다 말다 하는 것이 몇 가지 있는데, 그 중 하나가 Maven이다. 메이븐은 애플리케이션 라이플사이클 관리(ALM)및 의존모듈 관리(dependency management)툴인데, 현재 국내 전자정부 프레임워크의 기반 툴중 하나이기도 하다. 의존성 관리도 해보고 프로젝트도 만들어서 진행해 봤는데 아쉽게도 끝까지 진행하진 못했다.

Maven을 쓰다 말다 하게 되는데 몇 가지 이유가 있는데, 그 중 가장 큰 이유는 (현 시점에서) 주변사람들과 함께 작업하기 어려워서다. 혼자 쓸 줄 아는걸로는 함께 하기엔 다소 어려운 점이 있다. 이게 무슨 말인가 하면 Maven은 그 특징상 설정이 잘 되어 있다는 가정하에서 사용자(Developer)가 편하게 의존성 관리나 애플리케이션 관리(빌드, 테스트, 배포 등등)를 쉽게 할 수 있도록 도와준다. 그런데 문제는 문장내에 있는것 처럼 "설정이 잘 되어 있다"는 가정하에서라는 점이다. 보통 팀의 아키텍트 역할을 하는 사람이 해당 설정을 해야 하는데 학습기간 다소 필요하고, 몇 가지 기본적인 문제를 해결해 놓아야 한다.

- 저장소 관리 (개별 or 공용)
- 공용 저장소에 없는 모듈 관리
- 플러그인에 문제 발생시 대응

그리고 적어도 팀내 두 명 이상은 해당 내용을 처리할 수 있어야 한다. 아니면 팀내 고립된 기술, 고립된 담당자가 되어버리기 때문이다. 팀내 적어도 두명의 설정을 고칠 수 있는 사람이 있어야 하는데, 그게 생각보다 쉽지 않다. 더더군다나 Ant와  Ivy를 함께 써왔다던가, Maven Ant Tasks로 의존성관리만을 해왔던 팀은 Maven 으로의 이전(Transition)에 장벽이 더 크다. 게다가 그 동안 변변한 자료가 없었기에 알음알음 배우거나 인터넷에 공개되어 있는 영문 레퍼런스 북을 이용해야만 했다.

그러다 최근에는 자료가 많이 늘어서 상황이 많이 나아졌다.

지앤선(志&嬋) 출판사에서 메이븐 책이 내왔고 전자정부 표준 프레임워크 위키 페이지에서도 참고자료가 있다.
Maven 메이븐 : Sonatype이 만든 Maven 핵심 가이드
http://www.yes24.com/24/Goods/4143117?Acode=101

전자정부 표준프레임워크 위키
http://www.egovframe.org/wiki/doku.php?id=egovframework:dev:gettingstarted

아파치 메이븐 2 시작하기 (한글)
http://www.ibm.com/developerworks/kr/library/tutorial/j-mavenv2/section2.html

특히 전자정부 표준프레임워크 사이트에서는 스프링관련 자료들도 함께 얻을 수 있다. 주변 분들이 여기에 많이 투입되어서 열심히 작업하시는걸 봤다. 가끔 가서 참고 자료를 보는데 메이븐에 대해서도 좋은 자료가 많다. 특히 저장소도 제공하고 있다. 조만간 프로젝트 사례 기반의 메이븐 국내서도 발간될 예정이니 그걸 기다려 보는것도 괜찮을 것 같다. :)