우리가 작성한 소스코드(java), 프로젝트에서 쓰인 각각의 파일 및 자원 등(.xml, .jpg, .jar, .properties)을 JVM이나 톰캣같은 WAS가 인식할 수 있는 구조로 패키징 하는 과정 및 결과물이라고 할 수 있다.
Maven은 자바 기반 프로젝트를 빌드하고 관리하는 데 사용하는 도구이다.
초창기 자바 프로젝트 도구의 대표적인 관리 도구였던 Ant를 대체하기 위해 개발되었다.
Ant는 스크립트 작성도 많고, 라이브러리 의존관리가 되지 않아 불편
Maven의 가장 큰 특징은 pom.xml파일에 필요한 라이브러리를 추가하면 해당 라이브러리에 필요한 라이브러리까지 함께 내려받아 관리한다는 점이다.
프로젝트 관리
: 프로젝트 버전과 아티팩트를 관리한다.빌드 및 패키징
: 의존성을 관리하고 설정된 패키지 형식으로 빌드를 수행한다.테스트
: 빌드를 수행하기 전에 다위 테스트를 통해 작성된 애플리케이션 코드의 정상 동작 여부를 확인한다.배포
: 빌드가 완료된 패키지를 원격 저장소에 배포한다.Maven의 기능은 생명주기 순서에 따라 관리되고 동작한다.
Maven의 생명주기는 다음과 같다.
생명주기
는 크게 기본 생명주기(Default Lifecycle), 클린 생명주기(Clean Lifecycle), 사이트 생명주기(Site Lifecycle)의 3가지로 구분한다. 각 생명주기는 다음과 같은 단계가 존재하며, 특정 단계를 수행하기 위해선 이전 단계를 마쳐야 한다.
기본 생명주기
Validate - Compile - Test - Pacakge - Verify - Install - Deploy
Validate
: 프로젝트가 올바른지 확인하고 필요한 모든 정보를 사용할 수 있는지 확인하는 단계Compile
: 프로젝트의 소스코드를 컴파일 하는 단계Test
: 유닛(단위) 테스트를 수행 하는 단계(테스트 실패시 빌드 실패로 처리, 스킵 가능)Pacakge
: 실제 컴파일된 소스 코드와 리소스들을 jar, war 등등의 파일 등의 배포를 위한 패키지로 만드는 단계Verify
: 통합 테스트 결과에 대한 검사를 실행하여 품질 기준을 충족하는지 확인하는 단계Install
: 패키지를 로컬 저장소에 설치하는 단계Deploy
: 만들어진 package를 원격 저장소에 release 하는 단계클린 생명주기
Clean
Clean
: 빌드 시 생성되었던 파일들을 삭제하는 단계사이트 생명주기
Site - Site-deploy
Site
: 프로젝트 문서와 사이트 작성, 생성하는 단계
Site-deploy
:생성된 사이트 문서를 웹 서버에 배포하는 단계