목차

개요

메이븐은 프로젝트 객체 모델(Project Object Model)이라는 개념을 바탕으로 프로젝트 의존성 관리, 라이브러리 관리, 프로젝트 생명 주기 관리 기능 등을 제공하는 프로젝트 관리 도구이다. 또한 플러그인을 기반으로 소스 코드로부터 배포 가능한 산출물을 만들어 내는 빌드 기능 뿐만 아니라 레포팅 및 documentation 작성 기능 등을 제공한다.

설명

Maven 특징

Maven 장점 Maven 단점
• 뛰어난 의존성 관리
- 의존성 자동 업데이트
-저장소를 통한 라이브리 일괄 관리

• 모든 프로젝트에 걸쳐 쉽게 적용 가능한 일관적인 사용법

• 라이브러리 및 메타 데이터 저장을 위한 지속적으로 확장 되고 있는 저장소

• 쉽게 작성 가능한 플러그 인을 통한 확장성

• 동시에 다수의 프로젝트 핸들링 할 수 있는 쉬운 설정 기반의 메커니즘

• 간단한 설정을 통한 배포 관리

• Java, C++ 등 다수의 프로그래밍 언어 지원
• Repository 관리의 불편함
- Maven 프로젝트의 급속한 발전으로 central repository가 제공하는 라이브러리들이
빠르게 증가하고 있으나 아직 3rd 파티 라이브러 등 미제공 라이브러리들이 있음

• pom.xml 파일 관리
- 메이븐 프로젝트 관리에 대한 모든 내용이
pom.xml 파일에 담기게 되믄로 길고 장황하게 될 수 있음

• 프로젝트에 특화된 복잡한 빌드 기능 제약
- 메이븐 프로젝트 특성상 소프트웨어 빌드에 통용되는
라이프 사이클을 제공하고 있어 세부 항목 또는 특화된 빌드 환경에 대한 지원이 미약함

Maven 아키텍처

Maven은 프로젝트 전체 내용에 대한 기술 및 설정을 담당하는 POM과 라이브러리(Maven에서는 artifact라 호칭함)관리에 대한
dependency/repository 관리 모델 그리고 컴파일, 테스트, 패키징 등의 빌드 생명 주기를 다루는 lifecycle 및 
관련된 plugin들과의 연동을 다루는 부분으로 구성된다.   
프로젝트 객체 모델: 메이븐 엔진 내장 + POM.XML 파일에서 선언적으로 제공
종속성 관리 모델: 로컬 및 리모트 저장소를 이용
프로젝트 생명 주기 모듈: 메이븐 엔진은 플러그인을 통해 파일을 다루는 거의 모든 작업을 수행

참고자료

아파치 메이븐 프로젝트

IBM 메이븐2 튜토리얼