본문 바로가기
개발/Java

[Spring] Maven 라이프사이클 알아보기 :: 마이자몽

by 마이자몽 🌻♚ 2020. 2. 11.

Maven 라이프사이클

 이클립스를 사용해서 Spring MVC Project를 만들고 사용해보셨다면... Maven을 들어봤지만 정확히 무엇을 해주는 것인지? 그리고 어떻게 어떤 원리로 작동하는 것인지 잘 모르고 사용해 왔습니다. 이클립스에 내장시켜 놓을만큼 중요한 것이기 때문에 꼭 알고 넘어가는 것이 중요하다고 생각합니다.

 Maven은 프로젝트의 라이브러리를 관리해주고 빌드를 해주는 두가지 기능을 갖고 있습니다. Maven의 라이프사이클은 이 두가지 기능 중 두번째, 빌드와 관련된 개념입니다. 프로젝트를 빌드하는데 있어 분명 순서가 존재합니다. 그 순서를 바로 Maven의 라이프사이클이라고 합니다.

 

Maven 라이프사이클 종류

출처 : https://www.slideshare.net/ssuser5445b7/ss-56566336?qid=927855f5-7c8a-4f88-a834-d31292324fd2&v=&b=&from_search=4

Maven의 라이프사이클 종류는 위 이미지에서와 같이 3가지 Default(기본), Clean 그리고 Site가 있고, 각 라이프사이클 안에 phase(compile, test, package....)가 존재합니다. 각 phase를 통해 Maven 명령을 내릴 수 있고, 나중 단계의 phase를 실행 시켰다면 이전 단계가 모두 실행 되어집니다. 예를들어 "mvn install"이라는 명령을 내리면 compile 부터 install 단계까지 모두 실행이 됩니다. 이클립스를 사용하면서 Run As... Maven install, Maven clean 등 빌드시킬때 사용하던 명령 들이 바로 라이프사이클의 각 phase 단계를 실행 시켜주는 것이 었습니다. 각 phase에는 plugin이 존재하고 해당 plugin에서 수행 가능한 명령을 goal 이라고 합니다.

Goals의 ":" 기준으로 앞은 plugin을 의미하고 뒷 부분은 해당 plugin의 goal을 뜻합니다.

ex) surefire:test -> plugin = surefire, goal = test

라이프서클의 phase와 goal에 대한 자세한 정보는 공식 홈페이지를 통해 알 수 있습니다.

 

Maven – Introduction to the Build Lifecycle

The build lifecycle is simple enough to use, but when you are constructing a Maven build for a project, how do you go about assigning tasks to each of those build phases? The first, and most common way, is to set the packaging for your project via the equa

maven.apache.org

 

 

그럼 각 라이프사이클 phase별로 간단하게 알아보겠습니다.

 

default(기본) 라이프사이클

기본 라이프사이클은 총 5단계로 이루어져 있습니다.

 

Compile

명령 : mvn compile

소스코드를 컴파일해주는 단계입니다. 성공적으로 컴파일이 된다면 target/classes폴더가 만들어지고 컴파일된 class파일이 생성된다.

Test

명령 : mvn test

테스트 코드를 실행해주는 단계입니다. 실패하면 빌드가 멈춥니다. 이 단계에서 target/test-classes폴더와 안에 컴파일된 class파일이 생성되고 target/surefire-reports 폴더에 테스트 결과가 기록됩니다.

Package

명령 : mvn package

해당 프로젝트를 지정한 확장자로 묶어주는 단계입니다. 확장자 타입은 pom.xml에 packaging 태그로 묶이게 되고

"artifactId-version.packaging"형태의 파일을 target폴더안에 생성해줍니다.

install

명령 : mvn install

로컬 리포지토리 즉 Maven이 설치되어 있는 PC에 배포하게 됩니다.

deploy

명령 : mvn deploy

원격 리포지토리가 등록되어 있다면 해당 원격 리포지토리에 배포하게 됩니다.

 

Clean 라이프사이클

명령 : mvn clean

생성된 target 폴더를 삭제해버립니다.

 

Site 라이프사이클

문서 사이트를 생성할 수 있도록 지원합니다.

댓글0