메이븐(Maven)
은 자바 프로젝트 관리 도구 입니다. 프로젝트 관리 도구는 빌드, 패키징, 배포, 라이브러리와 모듈 등을 관리해주는 도구입니다.
메이븐은 setting.xml
과 pom.xml
두 개의 xml 파일을 통해서 관리를 수행합니다.
setting.xml
에서는 메이븐 설정에 대한 내용을 가지고 있으며, pom.xml
에서는 프로젝트의 라이브러리에 대한 정보들을 가지고 있습니다. 따라서 pom.xml
만 있다면 메이븐이 필요한 라이브러리들을 자동으로 다운받고 관리해줍니다.
메이븐은 미리 정해진 라이프 사이클
에 따라서 빌드를 수행합니다.
빌드(build)
는 소스 코드 등의 파일을 실행가능한 소프트웨어 결과물로 반환하는 과정 또는 그 결과물을 의미합니다.
메이븐은 크게 3가지의 라이프 사이클인 Default, Clean, Site
를 갖습니다.
Default
는 프로젝트의 개발 및 배포와 관련된 빌드, Clean
은 프로젝트 정리, Site
는 프로젝트 문서 생성과 작성에 관한 일을 합니다.
각 라이프 사이클은 Phase
라는 세분화된 단계로 다시 한 번 더 나누어지며, 각 Phase는 이전 Phase가 완료되어야만 실행되는 의존 관계를 가지고 있습니다.
이미지 출처
이 중에서 가장 핵심적인 동작을 하는 것은 Default Life Cycle
입니다.
Default Life Cycle
에서 핵심적인 기능을 하는 Phase는 다음과 같습니다.
여기서 Phase는 개념적인 단계일뿐이고 실제 동작은 각 Phase에 연관된 Plugin들이 존재하며 이 Plugin을 수행하도록 하는 명령을 실행해서 라이프 사이클 Phase를 동작하게 만듭니다. 이때 Plugin을 실행하게 하는 명령어를 goal
이라고 부릅니다.
Maven은 xml의 낮은 생산성이나 느린 빌드 속도의 문제 등으로 인해서 다음에 소개드릴 Gradle로 많이 넘어가는 추세라고 합니다.