Maven은 빌드 프로세스를 실행하기 위해 여러개의 LifeCycle을 제공한다.
각 LifeCycle은 특정한 빌드 단계(build phase)를 정의하며 빌드 프로세스는 이 라이프사이클을 따라서 실행된다.
There are three built-in build lifecycles: default, clean and site. The default lifecycle handles your project deployment, the clean lifecycle handles project cleaning, while the site lifecycle handles the creation of your project's web site.
maven은 LifeCycle은 clean, default, site 세 가지로 구성되어 있다.
1. Clean Lifecycle
이전에 빌드의 결과물을 삭제하는 작업
- pre-clean: clean 작업을 실행하기 전에 수행할 작업 정의
- clean: 빌드 이전에 생성된 결과물과 임시 파일들을 삭제
- post-clean: clean 작업 이후 수행해야 할 작업을 정의
2. Default Lifecycle
인텔리제이 실행 버튼 눌렀을 때 실행되는 기본적인 maven 라이프 사이클로 pom.xml에 특정 플러그인을 설정하여 해당 플러그인이 실행될 수도 있다.
- validate: 프로젝트가 올바르게 구성되어 있는지 검증
- compile: 소스 코드를 컴파일하여 클래스 파일을 생성
- test: 테스트 코드를 실행하여 성공 여부를 확인
- package: 컴파일된 클래스 파일과 리소스 파일을 하나의 JAR, WAR 등의 패키지로 만듦
- verify: 통합 테스트 결과를 검증
- install: 로컬 저장소에 빌드된 패키지를 설치
- deploy: 원격 저장소에 빌드된 패키지를 배포
maven 공식 문서를 열어보면 generate-sources, process-sources 등 소스 코드 생성과 관련된 작업을 수행하는 단계를 포함하여 더 세분화되어있지만 문서에도 이 7가지 phases를 강요한다.
순차적으로 진행되고 만약 mvn package를 한다면 이전 단계가 자동으로 실행된다.
다른 실행도 마찬가지로 이전 단계가 자동으로 실행된다.
3. Site Lifecycle
프로젝트 문서 사이트를 생성하고 배포하는 라이프사이클이다. 이 라이프사이클은 프로젝트 문서를 생성하고 HTML, CSS, JavaScript 등의 웹 페이지로 만든다. 이를 위해서는 Javadoc, 소스 코드, 문서 파일 등의 소스를 이용하며, Maven은 이러한 소스를 컴파일하고 정리하여 사이트를 생성한다.
- pre-site: 사이트 생성 작업을 실행하기 전에 수행할 작업 정의
- site: 프로젝트 문서 사이트 생성
- post-site: 사이트 생성 작업이 완료된 후에 수행할 작업 정의
- site-deploy: 생성된 사이트를 웹서버나 원격 저장소에 배포
위의 빌드 단계(build phase)들은 순서대로 실행되며, 라이프사이클의 모든 단계가 완료되어야 다음 라이프사이클을 시작할 수 있습니다.
또한, Maven은 사용자 정의 빌드 단계를 추가할 수도 있습니다. 이러한 사용자 정의 빌드 단계는 플러그인(plugin)을 사용하여 정의할 수 있다.
default lifecycle을 더 세분화해서 보고 싶으면 공식문서를 참고하면 된다.
예를 들어 maven repository에서 dependency를 받아오는 단계는 어디일까 고민해보면 complie 이전
generate-resources에서 받아올 것이다. 자세한 과정과 순서가 궁금할 때 참고하도록 하자.
참고)
https://maven.apache.org/guides/introduction/introduction-to-the-lifecycle.html#Lifecycle_Reference
'IT' 카테고리의 다른 글
스프링 AOP(Aspect Oriented Programming) step1 (0) | 2023.05.05 |
---|---|
스프링 트랜잭션 (Spring Transaction) step4 : Spring ProxyFactoryBean (0) | 2023.05.03 |
스프링 트랜잭션 (Spring Transaction) step3 : 다이내믹 프록시 (0) | 2023.04.30 |
자바 리플렉션(reflection) (0) | 2023.04.30 |
스프링 팩토리 빈(Factory Bean) (0) | 2023.04.29 |