Maven은 아파치 소프트웨어 재단(Apache Software Foundation)에서 개발한 프로젝트 빌드(Build), 의존성 관리(Dependency Management), 프로젝트 관리(Project Management) 도구입니다. Java 기반 프로젝트에서 널리 사용되며, 프로젝트의 라이프사이클을 자동화하고 일관된 빌드 시스템을 제공합니다.
1. Maven의 주요 특징
1-1) 프로젝트 빌드(Build) 자동화
Maven을 사용하면 컴파일, 테스트, 패키징, 배포 등의 빌드 작업을 자동화할 수 있습니다.
프로젝트의 라이프사이클을 정의하여 일관된 빌드 방식을 유지할 수 있습니다.
1-2) 의존성 관리(Dependency Management)
pom.xml을 사용하여 외부 라이브러리(JAR 파일) 의존성을 관리할 수 있습니다.
중앙 저장소(Maven Central Repository)에서 자동으로 필요한 라이브러리를 다운로드하여 프로젝트에 추가합니다.
1-3) 일관된 디렉토리 구조 제공
Maven은 표준 디렉토리 구조를 제공하여, 모든 Maven 프로젝트가 동일한 폴더 구조를 따르도록 유도합니다.
1-4) 플러그인 기반(Plugin-based) 아키텍처
Maven은 다양한 플러그인을 지원하며, 필요에 따라 추가할 수 있습니다.
예: maven-compiler-plugin, maven-surefire-plugin, maven-deploy-plugin 등
1-5) 멀티 모듈(Multi-module) 프로젝트 지원
여러 개의 서브 프로젝트(모듈)를 포함하는 멀티 모듈 프로젝트를 쉽게 관리할 수 있습니다.
my-maven-project
│── src
│ ├── main # 애플리케이션 소스 코드
│ │ ├── java # Java 코드
│ │ └── resources # 설정 파일, 정적 리소스
│ ├── test # 테스트 코드
│ │ ├── java
│ │ └── resources
├── pom.xml # 프로젝트 설정 파일
└── target # 빌드된 결과물 (JAR, WAR 파일)
4. pom.xml 파일의 역할
Maven 프로젝트의 핵심 설정 파일은 pom.xml입니다.
4-1) pom.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> <!-- 프로젝트 그룹 ID -->
<artifactId>my-maven-app</artifactId> <!-- 프로젝트 이름 -->
<version>1.0.0</version> <!-- 프로젝트 버전 -->
<packaging>jar</packaging> <!-- 빌드 결과물 타입 -->
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<version>2.7.0</version>
</dependency>
</dependencies>
</project>