pom.mxl은 메이븐의 기능을 사용학 위해 작성하는 파일이다. 여기서 프로젝트, 의존성 라이브러리, 빌드 등의 정보 및 해당 프로젝트를 관리하는 데 필요한 내용이 기술되어 있다.
빌드 관리 도구
빌드 관리 도구란 JVM이나 WAS가 프로젝트를 인식하고 실행할 수 있게 우리가 작성한 소스코드와 프로젝트에 사용된 파일들(xml,jar,properties)을 빌드하는 도구이다.
메이븐
아파치 메이븐은 자바를 기반으로 하는 프로젝트를 빌드하고 관리하는 데 사용하는 도구이다. 초창기 자바 프로젝트의 대표적 관리 도구였던 Ant를 대체하기 위해 개발되었다. 메이븐의 가장 큰 특징은 pom.xml 파일에 필요한 라이브러리를 추가하면, 해당 라이브러리에 필요한 라이브러리까지 함께 내려받아 관리하는 것이다.
아래는 메이븐의 몇 가지 기능이다.
메이븐의 생명주기
메이븐의 기능은 생명주기 순서에 따라 관리되고 동작한다.
메이븐의 생명주기는 크게 '기본 생명주기(Default Lifecycle)', '클린 생명주기(Clean Lifecycle)', '사이트 생명주기(Site Lifecycle)', 이렇게 3가지로 구분할 수 있다.
각 생명주기는 단계(phase)가 존재하고, 특정 단계를 수행하기 위해 이전 단계를 마쳐야 한다.
Default 생명주기
validate -> compile -> test -> package -> verify -> install -> deploy
Clean 생명주기
clean
Site 생명주기
site -> site-deploy
각 단계는 메이븐에서 제공하는 플러그인이 설정된 목표를 수행하는 방식으로 동작한다.
물론 위에 쓰지 않은 세부 단계도 존재한다.
클린 생명주기
기본 생명주기
validate : 프로젝트를 빌드하는 데 필요한 모든 정보를 사용할수 있는지 검토한다.
compile : 프로젝트의 소스코드를 컴파일한다.
test : 단위 테스트 프레임워크를 사용해 테스트를 한다.
package : 컴파일한 코드를 가져와 JAR 드으이 형식으로 패키징 수행
verify : 패키지가 유효하며 일정 기준을 충족하는지 확인
install : 프로젝트를 사용하는 데 필요한 패키지를 로컬 저장소에 설치
deploy : 프로젝트를 통합 또는 릴리스 환경에서 다른 곳에 공유하기 위해 원격 저장소에 패키지를 복사
사이트 생명주기
site : 메이븐의 설정 파일 정보를 기반으로 프로젝트의 문서 사이트를 생성
site-deploy : 생성된 사이트 문서를 웹 서버에 배포
※ 메이븐도 많이 사용하지만 최근에는 그레이들(Gradle)이라는 빌드 도구로 전환되는 추세이다. 실제로 안드로이드에서는 그레이들을 표준 빌드 도구로 채택했다.