Maven Lifecycle 정리
Apache Maven은 3가지 기본 Lifecycle을 제공합니다: clean, default, site. 각 Lifecycle은 여러 단계(phase)로 구성되어 있으며, 단계별로 실행되는 플러그인(goal)이 정의됩니다.
🧹 Clean Lifecycle
소스 코드 및 컴파일 결과물을 정리(clean)하는 데 사용됩니다.
- pre-clean: 정리 작업 이전 실행되는 단계
- clean:
target/디렉터리 삭제 등 실제 정리 작업 수행 - post-clean: 정리 이후 후처리 단계
⚙️ Default Lifecycle (빌드 전 과정)
Maven의 중심이 되는 빌드 라이프사이클로, 소스 코드 컴파일 → 테스트 → 패키징 → 설치/배포까지 전 과정을 포함합니다.
🔹 Validate ~ Compile 단계
- validate: 프로젝트가 빌드 가능한 상태인지 유효성 검사
- initialize: 프로젝트 속성 설정 및 디렉터리 생성
- generate-sources: 자동 생성 소스코드 처리 (예: annotation processor)
- process-sources: 기존 소스에 대한 전처리 작업
- generate-resources: 리소스 파일 자동 생성
- process-resources:
src/main/resources의 리소스를target/classes로 복사 - compile: 자바 소스코드 컴파일
- process-classes: 클래스 파일 후처리 (예: Bytecode Instrumentation)
🔹 테스트 단계
- generate-test-sources: 테스트 소스 자동 생성
- process-test-sources: 테스트 소스 전처리
- test-compile: 테스트 코드 컴파일
- process-test-classes: 테스트 클래스 후처리
- test: 단위 테스트 실행 (Surefire 플러그인 등 사용)
🔹 패키징 및 통합 테스트 단계
- prepare-package: 패키징 전 준비 작업 수행
- package: 결과물을
.jar,.war등으로 패키징 - pre-integration-test: 통합 테스트 전 초기화 작업 (서버 시작 등)
- integration-test: 통합 테스트 수행
- post-integration-test: 통합 테스트 후 서버 종료 등 정리 작업
🔹 검증 및 배포 단계
- verify: 패키징 결과의 검증 수행
- install:
.jar를 로컬 Maven 저장소(~/.m2/repository)에 설치 - deploy: 원격 Maven 저장소로 업로드 (CI/CD 배포 시 주로 사용)
⚠️ 모든 단계가 반드시 실행되는 것은 아니며,
mvn install,mvn package등 명령에 따라 해당 단계까지만 수행됩니다.
📝 Site Lifecycle
프로젝트의 문서화 및 리포트 생성을 담당하는 라이프사이클입니다.
- pre-site: 문서화 이전의 준비 작업
- site: 프로젝트 사이트 생성 (Maven Site Plugin 사용)
- post-site: 사이트 생성 후 후처리 작업
- site-deploy: 생성된 사이트를 서버에 배포 (e.g. GitHub Pages)