본문 바로가기
컴퓨터공학/개발환경

빌드도구 | 아파치 메이븐 (Maven) 소개

by KISCH 2025. 6. 19.

 

쉽게 설명드리겠습니다. 정리해봤습니다. 살펴보겠습니다. 소개해드립니다.

 

 

목차

     

     

    Maven 이란?

     

    * 소개

    아파치 메이븐은 자바 기반 프로젝트의 빌드, 의존성 관리, 프로젝트 관리를 자동화하기 위해 사용되는 빌드 도구 (Build Tool)입니다. 자바 개발에서 널리 사용되며, XML 기반의 설정 파일을 통해 프로젝트 구성을 정의합니다.

     

    * 주요 기능

    1. 빌드 자동화 - 소스 컴파일, 테스트 실행, JAR/WAR 파일 생성, 배포 등 자동으로 처리

    2. 의존성 관리 - 외부 라이브러리를 중앙 저장소에서 자동으로 다운로드하고 관리

    3. 표준화된 프로젝트 구조 - 메이븐은 정해진 디렉토리 구조를 따라 일관된 개발 환경을 제공합니다.

    4. 플러그인 기반 아키텍쳐 - 다양한 플로그인을 통해 기능을 확장할 수 있습니다.

    5. 멀티 모듈 프로젝트 지원 - 여러 개의 서브 프로젝트를 하나의 루트 프로젝트로 구성해 관리 가능합니다.

     

     

    Maven 구조

     

    my-project/
    ├── pom.xml
    └── src/
        ├── main/
        │   ├── java/
        │   ├── resources/
        │   ├── filters/
        │   └── webapp/
        │       └── WEB-INF/
        └── test/
            ├── java/
            └── resources/

     

    * pom.xml

    pom.xmMaven의 핵심 설정 파일로 프로젝트의 이름, 버전, 의존성, 플러그인, 빌드 설정 등을 정의합니다.

     

    * src 디렉토리

    모든 소스 코드와 리소스가 이 폴더 안에 들어가게 됩니다.

     

     src/main  - 애플리케이션 코드를 포함합니다.

     src/main/java  - Java 소스 파일이 들어가는 폴더입니다.

     src/main/resources  - 설정 파일, 정적 리소스, 프로퍼티 파일 등이 위치합니다.

     src/main/filters  - 환경별 설정 분리 시 사용됩니다.

     src/main/webapps  - 웹 애플리케이션 리소스(HTML, JSP, CSS, JS, 이미지 등)

    • WEB-INF 폴더 안에 web.xml 같은 설정 파일이 위치합니다.

     

     src/test  - 테스트 코드와 관련된 모든 것이 위치합니다.

     src/test/java  - JUnit 등의 프레임워크를 사용하는 테스트 클래스 작성 위치 

     src/test/resources  - 테스트에서 사용되는 설정 파일, 더미 데이터, 리소스 파일 등 

     

    * target 디렉토리

    빌드 후 생성되며 컴파일된 .classs 파일, 패키징된 .jar 또는 .war 파일, 테스트 결과 등이 이 디렉토리에 저장됩니다.

     

     

     

     

    Maven 라이프 사이클 

     

    메이븐은 동작 방식이 정해져 있으며 빌드 순서를 통해 어떻게 동작하는지 살펴보겠습니다.

     

    * Life Cycle

    1.  Default(Build)   일반적인 빌드 프로세스를 위한 모델 

    2.  Clean  - 빌드시 생성되었던 파일들을 삭제하는 단계

    3.  Validate  - 프로젝트가 올바른지 확인하고 필요한 정보를 사용할 수 있는지 확인하는 단계

    4.  Compile  - 프로젝트의 소스코드를 컴파일 하는 단계

    5.  Test  - 유닛 테스트를 수행하는 단계

    6.  Package  - 실제 컴파일된 소스 코드와 리소스들을 jar, war 등의 배포를 위한 패키지로 만드는 단계

    7.  Verify  - 통합 테스트 결과에 대한 검사를 실행해 품질 기준을 충족하는지 확인하는 단계

    8.  Install  - 패키지를 로컬 저장소에 설치하는 단계

    9.  Site  - 프로젝트 문서와 사이트 작성, 생성하는 단계

    10.  Deploy  - 만들어진 package를 원격 저장소에 release하는 단계

     


    관련포스트
    스프링부트 웹프레임워크 구조와 빌드 도구
    프론트엔드와 백엔드(웹서버, 웹애플리케이션, 웹프레임워크)
    웹 서버와 웹 애플리케이션 서버(WAS)의 차이 설명
    JAVA 프레임워크 | 스프링(SPRING) 프레임워크와 스프링 부트 소개
    반응형

    댓글