ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 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

    실행 결과:

    1. clean: 기존 빌드 결과물 삭제
    2. validate: pom.xml의 정보 검증
    3. compile: src/main/java의 소스 코드 컴파일
    4. test: JUnit을 사용하여 단위 테스트 실행
    5. 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
Designed by Tistory.