어제 오늘 내일

[Maven] Build Lifecycle과 Phase, Goal (빌드 생명주기와 단계, Goal) 본문

IT/maven

[Maven] Build Lifecycle과 Phase, Goal (빌드 생명주기와 단계, Goal)

hi.anna 2023. 4. 3. 01:28

 

Maven은 빌드 생명주기(Lifecycle)를 따라, 빌드, 배포됩니다.

 

 

Maven Build Lifecycle (빌드 생명주기)

Maven에 빌트인 된 생명주기는 다음 3가지가 있습니다.

  • default : 프로젝트 빌드 및 배포합니다.
  • clean : 이전 빌드에서 생성된 파일들을 삭제합니다.
  • site : 프로젝트 사이트를 생성합니다.

 

 

Maven Phase (단계)

각각의 생명주기는 몇 개의 Phase로 구성됩니다.

clean은 3개의 Phase로 구성되고, default는 23개, site는 4개의 Phase로 구성됩니다.

자세한 생명주기 별 Phase 목록은 아래 사이트에서 확인하세요.

https://maven.apache.org/guides/introduction/introduction-to-the-lifecycle.html#Lifecycle_Reference

 

 

 

Maven default 생명주기의 주요 Phase

여기서는 default 생명주기의 주요 phase를 살펴보겠습니다.

 

  validate  

빌드를 위한 프로젝트 정보의 유효성을 체크합니다.

 

  compile  

코드를 컴파일 합니다.

 

  test  

컴파일된 소스코드를 사용하여, 단위 테스트를 수행합니다.

 

  package  

배포할 파일 형식으로 패키징 합니다.

(ex) JAR, WAR 파일을 생성합니다

 

  verify  

패키지의 유효성을 검사하고, 품질 기준을 만족하는지 체크합니다.

 

  install  

로컬 repository에 패키지를 설치합니다.

(다른 로컬 프로젝트에서 참조할 수 있도록)

 

  deploy  

최종 패키지를 원격 repository에 복사합니다.

(다른 개발자나 프로젝트에서 참조할 수 있도록)

 

 

이 생명주기의 phase들은 순서대로 실행됩니다.

유효성 검사(validate)
→ 컴파일(compile)
→ 단위 테스트(test)
→  패키징(package)
→ 검증(verity)
→ 인스톨(install)
 → 배포(deploy)

 

 

Phase 실행시키기

mvn phase

위 명령어를 사용해서 각 phase를 실행시킬 수 있습니다.

phase를 지정하여 위 구문을 실행하면,

지정된 phase 뿐만 아니라, 지정된 phase 이전 phase도 모두 실행됩니다.

 

mvn package

예를 들어, 위와 같이 package 단계를 실행시키면,

그 이전의 단계를 모두 순서대로 실행하여

validate, compile, test, package 단계가 모두 실행되게 됩니다.

 

 

Goal

각 Phase에는 plugin goal들이 바인딩 되어 있습니다.

plugin goal은 특정 task를 수행합니다.

plugin goal들은 여러개의 phase에 바인딩 될 수도 있고,

phase에 바인딩되지 않을 수도 있습니다.

phase에 바인딩되지 않은 goal은 직접 실행시킬 수 있고,

phase에 바인딩된 goal은 phase가 실행될 때 실행됩니다.

plugin goal은 pom.xml의 <plugins> 영역에 정의됩니다.

 

ex)

compiler:compile

 - compiler plugin의 goal은 compile phase에 바인딩 됩니다.

 

 

반응형
Comments