Table of Contents
Maven #
Maven이란 소프트웨어 개발 프로젝트에 대한 표준화된 관리 방법을 제공하는 프로젝트 관리 프레임워크(도구)이다.
- 프로젝트 빌드(컴파일, 테스트, 패키징), 배포, 문서 등에 대한 일관된 표준과 업무를 수행하는데 필요한 다양한 기능을 제공한다.
Maven 정의 #
메이븐이란 프로젝트 관리 프레임워크(Project Management Framework)이다.
- 프로젝트를 관리하고 표현하는 데에 사용되는 여러 표준들과 저장소(Repository) 형식, 유용한 소프트웨어를 제공한다.
- 프로젝트 산출물들에 대한 빌드, 테스트, 배포하기 위한 표준적인 생명 주기를 정의한다.
Maven 적용 프로젝트의 장점
- 핵심 라이브러리(JAR)와 의존 라이브러리의 관리가 편리하다.
- 모든 소프트웨어 프로젝트에 정형화(표준화)된 디렉터리 구조와 빌드 프로세스를 유지한다.
- Maven의 다양한 플러그인을 활용 가능하다.
- 전사적으로 일관되게 사용 가능한 프로젝트 템플릿을 만들어 배포 가능하다.
Maven의 발전 #
Apache 재단의 Software 프로젝트 방식이다.
메이븐 이전의 프로젝트 #
- 컴파일, 배포, 웹사이트 생성에 대해서 서로 다른 접근 방식을 취한다.
- 수많은 좋은 프로젝트가 제각각 다른 빌드 체계를 가지고 있기 때문에 이를 사용하는 또 다른 프로젝트에서는 서로 다른 방식의 빌드 체계를 사용해서 또 다른 빌드 체계를 만들어 낸다.
- 소프트웨어를 빌드 하는데 공통적인(표준화된) 접근방식이 없다는 의미는 새로운 프로젝트마다 기존의 프로젝트의 빌드 체계를 Copy&Paste 한다는 의미이다.
- 다른 빌드 체계를 가진 프로젝트로의 진입 장벽이 매우 높았다.
Turbine 프로젝트 #
- Maven을 효율적인 프로젝트 관리 프레임워크로 사용하였다.
- 개발자가 한 프로젝트가 어떻게 빌드 되는지를 이해하면, 다른 프로젝트로 이동해서 동일한 과정을 겪을 필요가 없다.
- 빌드(컴파일, 테스트, 패키징), 문서 생성, 메트릭 및 리포트 생성, 배포 등을 메이븐 방식으로 처리 하였다.
Ant(앤트)와의 관계 #
- Maven은 단순한 빌드 도구가 아니며 엔트의 대체가 아니다.
- 앤트가 빌드를 스크립팅하는 기능을 제공하는 반면에 메이븐은 공통의 빌드 전략을 재사용함으로써 프로젝트 관리를 촉진시키기 위한 패턴에 대한 응용이다.
Maven의 기능 #
표준화된 선언적 방법을 사용하였다.
Maven을 사용하는 프로젝트의 장점 #
- 재사용성, 유지보수성, 이해도가 향상된다.
- 소프트웨어 프로젝트에 대한 동일한 접근방법을 가능하게 한다.
POM(Project Object Model) #
- Maven 프로젝트의 정형화된 구조와 내용을 명세한다.
- 개발자들이 자신의 빌드 프로세스를 만드는 것이 아니라, 표준적인 방법을 제공하는 것이다.
기능 #
- 빌드 프로세스에 대한 시간을 절약하고, 더 투명하게 만든다.
- 소스파일, 문서, 결과에 대한 디렉토리 위치를 표준화 시켰다.
- 공유된 저장소(Repository)로부터 프로젝트 Dependency를 뽑아낸다.
- 선언적인 모델(POM)과 상호작용하는 다양한 도구들을 지원한다.