default

이 라이프사이클은 Maven의 action 프레임워크의 핵심입니다. 표준적인 빌드 절차 순으로 구성되어 있습니다.

vlidate - 프로젝트가 올바른지 그리고 필요로 하는 정보가 모두 가용한지 확인
generate-sources - 컴파일과 관련된 소스 코드 생성
process-srouces - 소스 코드 처리
generate-resources - 패키지에 포함되어 있는 리소스 생성
process-resources - 목적지로 리소스를 복사하고 처리, 패키징 준비
compile - 소스 코드 컴파일
process-classes - 컴파일 후 생성된 파일들의 전 처리.
generate-test-srouces
process-test-sources
generate-test-resources
process-test-resources
test-compile
test - 단위 테스트 프레임워크를 사용하여 테스트를 실행
prepare-package - 패키징하기 전에 필요한 작업을 수행
package - 컴파일 된 코드를 JAR와 같은 배포용 형태로 묶음
pre-integration-test - 통합 테스트에 필요한 작업 수행
integration-test - 통합 테스트를 수행할 곳에 패키지를 배포하고 실행
post-integration-test - 통합 테스트 후에 해야할 일 수행
verify - 패키지를 올바른지 검증
install - 패키지를 로컬 저장소에 설치
deploy - 최종 패키지를 원격 저장소에 복사

프로젝트의 패키징 타입에 따라 위의 Phase들에 연관되어 있는 Goal들이 다릅니다. 따라서 pom 패키징 타입인 프로젝트와
jar 패키징 프로젝트가 같은 빌드 라이프사이클을 가지고 있더라고 각각의 Phase를 실행할 때마다 하는 일이 달라집니다.
예를들어, 위의 경우 package Phase에서 pom 패키징 타입의 프로젝트는 site:attach-descriptor
Goal을 실행하고, jar 패키징 타입의 프로젝트는 jar:jar를 실행합니다.

각각의 패키징 타입에 따라 연관되어있는 goal들은 다음과 같습니다.

jar :: 기본 패키징 타입.

process-resources - resources:resources
compile - compiler:compile
process-test-resources - resources:testResources
test-compile - compiler:testCompile
test - surefire:test
package - jar:jar
install - install:install
deploy - deploy:deploy

pom :: 가장 간단한 패키징 타입. 생성되는 파일은 pom 뿐. 별도의 jar나 ejb같은 패키지는 없음.

package - site:attach-descriptor
install - install:install
deploy - deploy:deploy

mvn-plugin :: 몇 가지 기술 파일들과 저장소의 데이터에 변경을 가합니다. 모든 Goal들은 플러그인에 들어있다는 것만 알고 넘어가라네요.

generate-resources - plugin:descriptor
process-resources - resources:resources
compile - compiler:compile
process-test-resources - resources:testResources
test-compile - compiler:testCompile
test - surefire:test
package - jar:jar, plugin:addPluginArtifactMetadata
install - install:install, plugin:updateRegistry
deploy - deploy:deploy

ejb :: ejb 플러그인을 필요로 합니다.

process-resources - resources:resources
compile - compiler:compile
process-test-resources - resources:testResources
test-compile - compiler:testCompile
test - surefire:test
package - ejb:ejb
install - install:install
deploy - deploy:deploy

war :: src/main/webapp/WEB-INF/ 디렉터리에 web.xml 설정 파일을 필요로 합니다.

process-resources - resources:resources
compile - compiler:compile
process-test-resources - resources:testResources
test-compile - compiler:testCompile
test - surefire:test
package - war:war
install - install:install
deploy - deploy:deploy

ear :: 배포 기술자(applicaion.xml)로 구성되어있는 간단한 Java EE 구조체. 만약 application.xml 파일이 없다면, POM 파일에 기반하여 파일을 생성해줍니다.

generate-resources - ear:generate-application-xml
process-resources - resources:resources
package - ear:ear
install - install:install
deploy - deploy:deploy

par :: 뭔지 모르겠음.

process-resources - resources:resources
compile - compiler:compile
process-test-resources - resources:testResources
test-compile - compiler:testCompile
test - surefire:test
package - par:par
install - install:install
deploy - deploy:deploy

커스텀 패키징 타입을 만들 수도 있으며, 그에대한 내용은 나중에 다룹니다. 다음에는 위에서 간단하게 살펴봤던 default Phase들을 조금만 더 들여다보겠습니다.