Maven 이라는 툴에 대해서 보고 있다.
징글징글하게 많은 툴과 라이브러리들이 난무하는 자바진영에서 그래도 어느정도 영향력을 발휘하고 있는 Tool 인 것 같아, 보게 되었다.
아직 학습중이지만, 뭐하는데 쓰는 거냐? 에 대해 간략히 이야기 한다면 build tool + project management tool 라고 할 수 있겠다. Project Management Tool 이라고 하니까 뭔가 대단해 보일 수 도 있지만, Focus 는 소스와 라이브러리 관리 + 단위테스트에 한정되어 있다.
프로젝트 소스를
Main 소스, Rsource, Test 의 3가지 커다란 카테고리로 나누고, 소스 빌드에 필요한 의존성이 있는 라이브러리들을 관린해 준다. 그 핵심에는 POM(Project Object Model)이라는 프로젝트 소스 관리 개념이 자리잡고 있다. 여기에 플러그 인 이라고 하는 개념과 함께 다양한 기능을 제공하고 있지만, Maven 의 저작자들은 Maven 을 빌드와 배포에 우선적으로 사용하길 권하고 있다. (우선 필요한 부분위주로 쓰고, 다양한 기능들은 천천히 알아가라는 뜻인것 같다.)
자바 진영의 최고 Build 툴이라면 두말 할 것 없이 Ant 인데, Ant와 Maven 의 관계는 상호 경쟁적이라기 보다는 상호 보완적인 관계가 더 맞는것 같다. 물론 둘 다 같은 일을 할 수 있지만, 함께 쓰는게 더 나아 보인다.
Ant 와 비교해 보면 Maven 의 독특한 특징이 보이는데, Ant가 바다와 같은 광활한 컨트롤이 가능하다면 Maven 은 COC(Convention Over Configuratoin)이라 컨셉을 바탕으로 보편적인 상식에 의한 설정의 최소화를 꾀한다. 따라서 세밀한 조정은 Ant가, 그리고 편하고 간단한 설정은 Maven 이 강점을 갖는다.
Ant 로 빌드 + Deploy 스크립트를 짜 봤지만, 구조적으로 프로젝트 소스를 관리하려면, Initial Script를 짜는 시간도 적잖이 드는데다가, 지나면 지날 수록 ant 실행용 build.xml 의 크기와 복잡도가 만만찮게 변하게 된다. (뭐, 그 쯤 되면 make가 더 간단할지도.)
아직 학습중이니까 여기까지만 쓰고 정리하자면
=== Maven ===
- 프로젝트 Build 및 소스한정 관리 툴
- COC 를 이용한 간편한 설정지원
- 의존관계를 설정함으로써 편리한 환경구성지원
- 학습에 어느정도 기간이 필요함
- ant가 하는 일을 할 순 있지만, 함께 쓰는게 더 좋을 듯 함
- POM (Project Object Model)이라는 개념을 갖고 있으며 pom.xml 에 기술되어 있음
- 적지 않은 오픈소스 프로젝트들에서 도입하고 있음
PS.
한영사전에는 뜻이 짧게 '전문가' 이렇게만 나오는데 영영사전에는 아래와 같이 나온다.
A maven (also mavin) is a trusted expert in a particular field, who seeks to pass knowledge on to others.
(뒷쪽 문장에 주목)
그리고, 발음은 한영사전 기준으론 메이번, Oxford 영어 사전에는 메이븐으로 나온다. 메이븐이 맞지 싶다.
'Better SW Development' 카테고리의 다른 글
간편한 Subversion server 툴 visualsvn server (2) | 2008.11.27 |
---|---|
Maven + m2eclipse 설치 하기 (0) | 2008.11.11 |
Eclipse, 플랫폼에서 생태계로 (0) | 2008.10.06 |
어떤 솔류션들 (0) | 2008.10.01 |
Mock Object를 사용하여 쉽게 테스트하기 part 2 (0) | 2008.09.11 |