Skip to main content

Maven Lifecycle 정리

Apache Maven은 3가지 기본 Lifecycle을 제공합니다: clean, default, site. 각 Lifecycle은 여러 단계(phase)로 구성되어 있으며, 단계별로 실행되는 플러그인(goal)이 정의됩니다.


🧹 Clean Lifecycle

소스 코드 및 컴파일 결과물을 정리(clean)하는 데 사용됩니다.

  1. pre-clean: 정리 작업 이전 실행되는 단계
  2. clean: target/ 디렉터리 삭제 등 실제 정리 작업 수행
  3. post-clean: 정리 이후 후처리 단계

⚙️ Default Lifecycle (빌드 전 과정)

Maven의 중심이 되는 빌드 라이프사이클로, 소스 코드 컴파일 → 테스트 → 패키징 → 설치/배포까지 전 과정을 포함합니다.

🔹 Validate ~ Compile 단계

  1. validate: 프로젝트가 빌드 가능한 상태인지 유효성 검사
  2. initialize: 프로젝트 속성 설정 및 디렉터리 생성
  3. generate-sources: 자동 생성 소스코드 처리 (예: annotation processor)
  4. process-sources: 기존 소스에 대한 전처리 작업
  5. generate-resources: 리소스 파일 자동 생성
  6. process-resources: src/main/resources의 리소스를 target/classes로 복사
  7. compile: 자바 소스코드 컴파일
  8. process-classes: 클래스 파일 후처리 (예: Bytecode Instrumentation)

🔹 테스트 단계

  1. generate-test-sources: 테스트 소스 자동 생성
  2. process-test-sources: 테스트 소스 전처리
  3. test-compile: 테스트 코드 컴파일
  4. process-test-classes: 테스트 클래스 후처리
  5. test: 단위 테스트 실행 (Surefire 플러그인 등 사용)

🔹 패키징 및 통합 테스트 단계

  1. prepare-package: 패키징 전 준비 작업 수행
  2. package: 결과물을 .jar, .war 등으로 패키징
  3. pre-integration-test: 통합 테스트 전 초기화 작업 (서버 시작 등)
  4. integration-test: 통합 테스트 수행
  5. post-integration-test: 통합 테스트 후 서버 종료 등 정리 작업

🔹 검증 및 배포 단계

  1. verify: 패키징 결과의 검증 수행
  2. install: .jar를 로컬 Maven 저장소(~/.m2/repository)에 설치
  3. deploy: 원격 Maven 저장소로 업로드 (CI/CD 배포 시 주로 사용)

⚠️ 모든 단계가 반드시 실행되는 것은 아니며, mvn install, mvn package 등 명령에 따라 해당 단계까지만 수행됩니다.


📝 Site Lifecycle

프로젝트의 문서화 및 리포트 생성을 담당하는 라이프사이클입니다.

  1. pre-site: 문서화 이전의 준비 작업
  2. site: 프로젝트 사이트 생성 (Maven Site Plugin 사용)
  3. post-site: 사이트 생성 후 후처리 작업
  4. site-deploy: 생성된 사이트를 서버에 배포 (e.g. GitHub Pages)

🔗 참고 링크

Reference