메이븐 라이프사이클
메이븐은 빌드 라이프사이클을 가지며, 라이프사이클의 각 단계를 페이즈라고 부른다.
메이븐의 라이프사이클과 페이즈
메이븐 빌드를 앤트(Ant)빌드와 비교해보자.
앤트는 빌드하기 위한 단위로 타겟을 사용한다.
앤트 기반의 빌드 스크립트
<project name="MyProject" default="dist" basedir=".">
<property name="src" location="src"/>
<property name="build" location="build"/>
<property name="dist" location="dist"/>
<target name="init">
<mkdir dir="${build}"/>
</target>
<target name="compile">
<javac scdir="${src}" destdir="${build}"/>
</target>
<target name="dist" depends="compile">
<mkdir dir="${dist}/lib"/>
<jar jarfile="${dist}/lib/MyProject-${DSTAMP}.jar" basedir="${build}"/>
</target>
</project>
앤트 빌드는 < target/> 엘리먼트 생성과 엘리먼트 사이의 의존관계를 개발자가 자유롭게 설정할 수 있다.
메이븐 빌드보다 자유로운편이라 느껴진다.
프로젝트 빌드 과정(일반적)
- 빌드 결과물 삭제
- 컴파일에 필요한 자원을 복사
- 소스 코드 컴파일
- 테스트
- 패키지
- 배포
앤트(Ant)에서는 이 각각의 단계를 < target/> 으로 만든 후 각 타겟의 의존 관계를 만들어 순서를 결정한다.
메이븐도 순서는 같으며, 다른 점은 빌드 단계를 미리 정의하고 있다는 것이다.
메이븐은 이와 같이 미리 정의하고 있는 빌드 순서를 라이프사이클 이라 하며, 라이프사이클의 빌드 단계를 페이즈라고 부른다.
메이븐에서는 모두 세 개의 라이프사이클을 제공한다.
- 소스 코드 컴파일, 테스트, 압축, 배포를 담당하는 기본 라이프사이클
- 빌드한 결과물을 제거하는 clean 라이프사이클
- 프로젝트 문서 사이트를 생성하는 site 라이프 사이클
기본 라이프사이클
소스 코드 컴파일, 테스트, 압축, 배포와 같은 일련의 작업을 모두 실행
각 페이즈
- compile : 소스코드를 컴파일
- test : Junit, TestNG와 같은 단위 테스트 프레임워크로 단위 테스트를 함. (테스트 실패시 빌드 실패로 간주)
- package : 단위 테스트가 성공하면 pom.xml < package/> 엘리먼트 값(war, jar, ear .. )등에 따라 압축한다.
- install : 로컬 저장소에 압축한 파일을 배포. (로컬저장소 => 개발자PC를 의미)
- deploy : 원격 저장소에 압축한 파일을 배포
각 페이즈는 의존관계를 갖기 때문에 package 페이즈를 실행하면 test 페이즈가 먼저 실행되고, test 페이즈는 compile 페이즈를 실행한다.
clean 라이프 사이클
clean 페이즈를 실행하면 메이븐 빌드를 통하여 생성된 모든 산출물을 삭제한다. (Target 디렉토리를 삭제)
site 라이프 사이클
site 라이프 사이클은 메이븐 설정 파일의 정보를 활용하여 프로젝트에 대한 문서 사이트를 생성할 수 있도록 지원한다.
site 페이즈 : 메이븐 기본 설정, 플러그인 설정에 따라 target/site 디렉토리 문서 사이트를 생성한다.
site-deploy 페이즈 : 생성한 문서 사이트를 설정되어 있는 서버에 "배포"하는 역할을 한다.
mvn site
'프로그래밍 노트 > 빌드도구' 카테고리의 다른 글
[Maven] 메이븐 기본 페이즈와 플러그인_1(컴파일) (0) | 2019.03.28 |
---|---|
[Maven] 메이븐 페이즈와 플러그인 (0) | 2019.03.28 |
[Maven] 메이븐 설정 파일 (pom.xml) (0) | 2019.03.25 |
[Maven] 메이븐 설정 파일 (settings.xml) (0) | 2019.03.25 |
[Maven] 메이븐 설치 및 템플릿 프로젝트 생성 (0) | 2019.03.25 |