-
Maven 빌드 과정CS/Spring 2025. 3. 31. 08:13
1. Maven의 기본 생명 주기
Maven에는 세 가지 기본 생명 주기(Build Lifecycle)가 있습니다.
① Clean Lifecycle
- 기존 빌드 결과물을 정리하는 과정
- 주요 단계:
- pre-clean: 정리 전에 실행
- clean: 빌드 결과물 삭제
- post-clean: 정리 후 실행

② Default (Build) Lifecycle
- 가장 중요한 생명 주기로, 프로젝트의 빌드 과정이 포함됨
- 주요 단계:
- validate: 프로젝트가 정상적인지 검증 (pom.xml 파일 존재 여부, 필수 정보 확인)
- compile: 소스 코드 컴파일
- test: 단위 테스트 실행 (src/test/java의 테스트 코드 실행)
- package: 실행 가능한 형태로 패키징 (.jar 또는 .war 생성)
- verify: 패키징된 결과물이 정상적인지 확인
- install: 로컬 저장소(~/.m2/repository)에 패키지 설치
- deploy: 원격 저장소(리포지토리)에 배포
③ Site Lifecycle
- 프로젝트 문서를 생성하는 과정
- 주요 단계:
- pre-site: 문서 생성 전 실행
- site: 프로젝트 문서 생성
- post-site: 문서 생성 후 실행
- site-deploy: 원격 서버에 문서 배포
2. pom.xml과 Maven 생명 주기
① 플러그인과 생명 주기 연결
Maven은 기본적으로 생명 주기의 각 단계에 대한 작업(goal)이 미리 정해져 있지만, 사용자가 직접 추가할 수도 있습니다.
이 작업을 위해 pom.xml에서 플러그인(Plugin)을 설정합니다.xml복사편집<build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>3.8.1</version> <configuration> <source>11</source> <target>11</target> </configuration> </plugin> </plugins> </build>위 설정은 compile 단계에서 Java 11을 사용하도록 지정하는 maven-compiler-plugin을 추가한 예제입니다.
② 빌드 명령어 실행 (mvn <goal>)
- mvn clean → clean 생명 주기의 clean 단계 실행
- mvn package → default 생명 주기의 validate → compile → test → package까지 실행
- mvn install → validate → compile → test → package → verify → install까지 실행
③ 라이프사이클에 커스텀 목표(goal) 추가
예를 들어, package 단계에서 추가적인 스크립트를 실행하려면 다음과 같이 설정할 수 있습니다.
xml복사편집<build> <plugins> <plugin> <artifactId>maven-antrun-plugin</artifactId> <executions> <execution> <phase>package</phase> <goals> <goal>run</goal> </goals> <configuration> <target> <echo message="패키징 완료 후 실행되는 작업입니다." /> </target> </configuration> </execution> </executions> </plugin> </plugins> </build>- mvn package를 실행하면, package 단계가 완료된 후 echo message가 출력됩니다.
3. pom.xml
xml<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.example</groupId> <artifactId>my-app</artifactId> <version>1.0-SNAPSHOT</version> <packaging>jar</packaging> <dependencies> <!-- JUnit 테스트 라이브러리 추가 --> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.13.2</version> <scope>test</scope> </dependency> </dependencies> <build> <plugins> <!-- Java 컴파일 플러그인 --> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>3.8.1</version> <configuration> <source>11</source> <target>11</target> </configuration> </plugin> <!-- 실행 가능한 JAR 파일 생성 --> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-jar-plugin</artifactId> <version>3.2.0</version> <configuration> <archive> <manifest> <mainClass>com.example.Main</mainClass> </manifest> </archive> </configuration> </plugin> </plugins> </build> </project>mvn clean package실행 결과:
- clean: 기존 빌드 결과물 삭제
- validate: pom.xml의 정보 검증
- compile: src/main/java의 소스 코드 컴파일
- test: JUnit을 사용하여 단위 테스트 실행
- package: target/my-app-1.0-SNAPSHOT.jar 파일 생성
- Maven의 생명 주기는 Clean, Default, Site 세 가지로 나뉨
- 각 생명 주기는 여러 단계(phase)로 구성되며, 순차적으로 실행됨
- pom.xml에서 플러그인 설정을 통해 각 단계에 원하는 작업(goal)을 추가할 수 있음
- mvn package, mvn install, mvn deploy 등의 명령어로 프로젝트를 빌드하고 배포할 수 있음
👉 pom.xml을 적절히 설정하면 Maven 생명 주기의 각 단계를 커스터마이징할 수 있다!
'CS > Spring' 카테고리의 다른 글
Spring JPA가 Auto Configuration(자동 설정) 되는 과정 + Connenction, CP (1) 2025.02.27 JPA 개념과 특징 (3) 2025.01.20 동시성 제어 (1) 2024.09.30 spring Batch 5.x (2) - 실습 (1) 2024.09.23 spring Batch (0) 2024.09.16