본문 바로가기
Programing/Maven

Maven Lifecycle

by Tomining 2015. 3. 12.

라이프사이클

메이븐에서는 라이프사이클이라고 해서 자체적으로 정의하고 있는 빌드단계를 정의하고 있다. 앤트와 같이 순서에 따라 작업을 수행하지 않고 빌드시 필요한 과정을 기정의하여 제공한다. 메이븐에서는 3개의 라이프사이클을 정의하고 있는데 빌드를 담당하는 Default, 제거를 담당하는 Clean, 배포를 담당하는 Site 라이프사이클이 존재한다.


페이즈

각 라이프사이클에서 수행하는 각 단계를 페이즈라고 정의하고 있다. 각 단계마다 실제적인 작업을 명시하여 본인이 수행하고 싶은 작업을 추가할 수 있다. 다음은 메이븐에서 정의하고 있는 페이즈들이다.


  • Clean
        pre-clean, clean, post-clean
  • Default
        validate, initialize, generate-sources, process-sources, generate-resources, process-resources,     compile, process-classes, generate-test-sources, process-test-sources, generate-test-resources,     process-test-resources, test-compile, process-test-classes, test, prepare-package, package,     pre-integration-test, integration-test, post-integration-test, verify, install, deploy
  • Site :
        pre-site, site, post-site, site-deploy


주요 페이즈


clean : 이전 빌드에서 생성된 모든 파일을 삭제한다.


compile : 프로젝트의 소스코드를 컴파일한다.

test : 테스트코드를 수행한다.

package : 컴파일된 소스를 jar, war등 정해진 포맷에 따라 패키징한다.

install : dependcy가 있는 다른 프로젝트에서 사용하기 위해 본인의 로컬 저장소(PC)에 설치한다.

deploy : 다른 개발자나 프로젝트에서 참조하기 위해 원격 저장소에 배포한다.


site : 프로젝트의 site 문서를 생성한다.

site-deploy : site 문서를 web sever에 배포한다.


[표] 디폴트 라이프사이클의 주요 단계(phase)


 단계설명 단계에 묶인 플러그인 실행
generate-sources컴파일 과정에 포함될 소스를 생성한다. 예를 들어,  DB 테이블과 매핑되는 자바 코드를 생성해주는 작업이 이 단계에서 실행된다.
process-sources필터와 같은 작업을 소스 코드에 처리한다. 
generate-resources패키지에 포함될 자원을 생성한다.  
process-resources필터와 같은 작업을 자원 파일에 처리하고, 자원 파일을 클래스 출력 디렉토리에 복사한다.resources:resources 
compile소스 코드를 컴파일해서 클래스 출력 디렉터리에 클래스를 생성한다.compiler:compile
generate-test-sources테스트 소스 코드를 생성한다. 예를 들어, 특정 클래스에서 자동으로 테스트 케이스를 만드는 작업이 이 단계에서 실행된다.
process-test-sources필터와 같은 작업을 테스트 소스 코드에 처리한다.resources:testResources 
generate-test-resources테스트를 위한 자원 파일을 생성한다.  
process-test-resources필터와 같은 작업을 테스트 자원 파일에 처리하고, 테스트 자원 파일을 테스트 클래스 출력 디렉터리에 복사한다. 
test-compile테스트 소스 코드를 컴파일해서 테스트 클래스 추력 디렉터리에 클래스를 생성한다.compiler:testCompile
test테스트를 실행한다.surefire:test
package컴파일 된 코드와 자원 파일들을 jar, war와 같은 배포 형식으로 패키징한다.패키징에 따라 다름
jar - jar:jar
war - war:war
pom - site:attach-descriptor
ejb - ejb:ejb
install로컬 리포지토리에 패키지를 복사한다.install:install
deploy생성된 패키지 파일을 원격 리포지토리에 등록하여, 다른 프로젝트에서 사용할 수 있도록 한다.deploy:deploy

References:
    Maven 홈 페이지: http://maven.apache.org


'Programing > Maven' 카테고리의 다른 글

POM 파일 기본구조  (0) 2015.03.12