Maven LifeCycle
- Maven은 빌드 수명 주기의 중심 개념을 기반
- Phase 크게 3가지(default, clean, site)로 구분
- clean - 3개
- phase default - 23개의
- phase site - 4개의 phase
- 메이븐은 대부분의 빌드 작업 시에 플러그인을 활용하며 메이븐 엔진이 생명주기 단계들과 플러그인을 바인딩 시켜 빌드 작업을 컨트롤
Phase 란?
Phase 순서에 따라 Phase에 바인딩된 Goal이 실행되는 구조를 가지고 있다. 각 Phase는 의존관계를 가지고 있으며 순서대로 실행이 된다. Phase에 아무런 Goal이 없다면 해당 Phase는 실행이 되지 않는다.
Clean Lifecycle
[1] pre-clean
프로젝트 클리닝을 위한 준비 ( 생성된 target 폴더를 삭제 )
[2] clean
이전 빌드에서 생성된 모든 파일을 정리
[3] post-clean
정리과정 마무리
Default Lifecycle
[1] validate
프로젝트 상태 점검, 빌드에 필요한 정보 존재 유무 체크
현재 설정과 POM의 내용이 유효한지 확인. 이 과정은 POM.XML 파일 트리 구조를 검증
[2] initialize
빌드 상태를 초기화, 속성 설정, 작업 디렉터리 생성 빌드 사이클에서 수행할 주요 작업 이전에 초기화를 할 수 있는 순간
[3] generate-sources
컴파일에 필요한 소스 생성
코드 생성기가 이 다음의 단계들에서 컴파일 되고 처리할 소스 코드를 생성하기 시작하는 순간
[4] process-sources
올바른 위치에 코드를 배치하여 소스 코드를 처리
소스의 파싱, 수정, 변경을 제공. 일반 코드 또는 생성된 코드 모두 여기서 처리
[5] generate-resources
리소스 정보를 생성
패키지에 포함될 자원 생성 소스 코드가 아닌 리소스를 생성하는 단계
보통 메타데이터 파일과 설정 파일을 포함
[6] process-resources
리소스를 올바른 폴더에 넣어 처리
이전 과정의 소스 코드가 아닌 리소스 파일들을 다룸. 이 단계에서 리소스 파일들이 수정, 변경, 재배치
[7] compile
소스 코드를 컴파일. 컴파일된 클래스들은 타깃 디렉터리 트리 구조에 저장
(eclipse) 성공적으로 컴파일이 된다면 target/classes(default path) 폴더가 만들어지고 컴파일된 class 파일이 생성된다.
[8] process-classes
생성된 컴파일된 클래스의 처리. 예) 바이트코드 강화, 바이트코드 난독화 등
클래스 파일 변환과 개선 단계를 다룸. 바이트 코드 위버(weaver)와 instrument 도구가 동작하는 단계
[9] generate-test-sources
테스트 소스 코드를 생성
단위 테스트 코드를 생성하는 모조가 동작하는 순간
[10] process-test-sources
테스트 소스 코드의 처리
컴파일하기 전에 테스트 소스 코드에 필요한 작업을 수행. 이 단계에서 소스 코드는 수정, 변환 또는 복사될 수 있다.
[11] generate-test-resources
테스트를 위한 리소스(자원) 생성
[12] process-test-resources
테스트 대상 디렉터리에 자원을 복사하고 가공
테스트 관련 리소스 처리, 변환, 재배치가 가능
[13] test-compile
테스트 소스 코드의 컴파일
단위 테스트 소스 코드를 컴파일
[14] process-test-classes
컴파일 후 후처리( 컴파일된 테스트 클래스 파일의 처리, 바이트 코드 향상, 코드 난독화 등 )
[15] test
컴파일된 단위 테스트를 실행하고 그 결과를 표시
junit과 같은 단위 테스트 프레임워크를 사용하여 생성된 테스트 케이스를 실행
실패시 빌드 종료
(eclipse) target/test-classes 폴더와 안에 컴파일된 class파일이 생성되고 target/surefire-reports ( surefire : 테스트를 위한 플러그인 필요 )
폴더에 테스트 결과가 기록됩니다.
[16] prepare-package
사전 패키징 작업을 수행합니다. 이 단계가 끝나면 포장을 풀고 처리된 버전을 출력
[17] package
실행 가능한 바이너리 파일들을 jar, war 같은 배포용 압출 파일로 묶음 ( 패키징 수행 )
(eclipse) target에 배포용 압축 파일 생성 ( 배포용 압출 파일 종류는 pom.xml에 설정 )
[18] pre-integration-test
통합테스팅 전 사전작업
통합 테스트는 실제 배치 환경의 코드를 테스트 하는 것을 말함. 이 단계에서 위에서 묶은 압축 파일을 서버에 배치 할 수 있음
[19] integration-test
실제 통합 테스트를 수행
[20] post-integration-test
통합테스팅 후 사후작업
통합 테스트 준비 상태를 해제. 테스트 환경의 리셋 또는 재초기화 과정을 포함 할 수 있음
[21] verify
배치 가능한 압축 파일의 무결성과 유효성을 검증 ( 품질 기준에 적합한지 검사 )
[22] install
패키지를 로컬 저장소에 설치
압축 파일을 로컬 메이븐 디렉터리에 추가 ( 이것에 의존하는 다른 모듈들을 사용 할 수 있게 됨 )
ex) C:\dev\apache-maven-3.8.4\{local repository}\com\test\projectname\1.0.0-SNAPSHOT
[23] deploy
패키지를 원경 저장소에 배포
원격 레파지토리가 등록되어 있다면 해당 원격(Nexus 등) 레파지토리에 배포하게 됨
없으면 해당 레파지토리 경로에 생성
Site Lifecycle
[1] pre-site
프로젝트 사이트 생성 이전의 프로세스를 실행
[2] site
프로젝트 사이트 문서 생성
[3] post-site
사이트 생성을 마무리하고 배포 준비
[4] site-deploy
문서를 웹 사이트에 배포
(참조) https://maven.apache.org/guides/introduction
(참조) https://maven.apache.org/guides/introduction/introduction-to-the-lifecycle.html
(참조) https://nesoy.github.io/articles/2021-03/maven-lifecycle
(참조) https://javacan.tistory.com/entry/MavenBasic
(참조) https://www.egovframe.go.kr/wiki/doku.php?id=egovframework:dev:dep:build:maven
'Programing > Maven' 카테고리의 다른 글
(Eclipse) Maven 속성 및 설정 (0) | 2022.10.03 |
---|---|
Maven Dependency | Packaging VS (Tomcat)Server Deploy (0) | 2022.08.12 |
Maven Build vs Java Project Build(eclipse) (0) | 2022.07.07 |
Maven Eclipse Setting (0) | 2022.07.07 |