Maven
- Java의 대표적인 빌드 툴(Build Tool) 중 하나
- apache 재단에서 개발하는 오픈소스
- apache ant의 후속으로 개발
- XML을 사용하여 빌드 파일을 기술
- 중앙 저장소를 이용한 편리한 의존 관계 라이브러리 관리
- 중앙 저장소: 메이븐에서 이용할 수 있는 라이브러리를 모아서 관리하는 웹 서비스
장점
- 편리한 의존 관계 라이브러리 관리
- 일관된 디렉토리 구조와 빌드 프로세스 관리
- 다양한 플러그인
단점
- maven에서 기본적으로 지원하지 않는 빌드 과정 추가가 복잡해짐
- 플러그인의 설정이 상이하거나 장황해지면 재사용성 및 확장성이 떨어짐
Life Cycle
- 미리 정해진 빌드 순서
- maven은 빌드 순서가 정해져 있음. 이를 life cycle이라고 함
clean
- 프로젝트를 정리하고 이전 빌드에서 생성된 모든 파일을 제거
- project_root/target 삭제
validate
- 프로젝트의 상태를 점검하고, 필드에 필요한 정보의 존재 여부를 체크
- 프로젝트의 POM 및 구성을 검증
compile
test
package
- 프로젝트에 대한 JAR(Java ARchive) 또는 WAR(Web Archive) 파일을 생성하여 배포할 수 있는 형식으로 변환
verify
install
- 패키징된 JAR/WAR 파일을 로컬 저장소에 배포
site
deploy
- 프로젝트를 컴파일, 테스트, 빌드 후 패키징된 JAR/WAR 파일을 원격 저장소에 복사
POM
- Maven의 기본 작업 단위
- Maven이 프로젝트를 빌드하는데 사용하는 프로젝트 및 구성에 대한 세부 정보가 포함된 XML 파일