Maven

✒️ 2025-06-28 19:35 내용 수정


참고 자료 : 갓대희's 작은공간 maven이란(정의, 예제), Geeksforgeeks Difference between Gradle and Maven, Java Code Geeks Maven and Gradle: A Side-by-Side Comparison

Maven

Java 프로젝트를 위한 빌드 자동화 도구

<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/maven-v4_0_0.xsd">  
	<modelVersion>4.0.0</modelVersion>  
	<groupId>org.example</groupId>  
	<artifactId>library</artifactId>  
	<packaging>war</packaging>  
	<version>1.0-SNAPSHOT</version>  
	<name>library Maven Webapp</name>  
	<url>http://maven.apache.org</url>  
	<dependencies>    
		<dependency>  
			<groupId>junit</groupId>  
			<artifactId>junit</artifactId>  
			<version>3.8.1</version>  
			<scope>test</scope>  
		</dependency>  
		
		<!-- Servlet API -->  
		<dependency>  
			<groupId>javax.servlet</groupId>  
			<artifactId>javax.servlet-api</artifactId>  
			<version>4.0.1</version>  
			<scope>provided</scope>  
		</dependency>  
	</dependencies>  
	<build>    
		<finalName>library</finalName>  
	</build>  
</project>

POM(Project Object Model)

프로젝트의 다양한 정보를 처리하기 위한 객체 모델

태그 설명
<project> 프로젝트 정보
<modelVersion> Maven의 모델 버전
<groupId> 프로젝트를 생성한 그룹명. 일반적으로 도메인 이름을 거꾸로 작성
<artifactId> 프로젝트 빌드 시 버전 정보를 생략한 파일 이름
<version> 프로젝트의 현재 버전. x.0.0 형식으로 표기하며, 개발중일 땐 SNAPSHOT 표기
<packaging> 패키징 유형. jar, war, zip 등을 작성
<name> 프로젝트 이름
<description> 프로젝트에 대한 설명
<properties> 프로젝트에서 사용하는 속성값들을 정의하며, pom.xml 문서 내에서 사용 가능
<dependencies> 프로젝트와 의존 관계에 있는 라이브러리를 관리. 각 라이브러리는 <dependency>로 작성
<plugin> 빌드에 사용할 플러그인

Build

Maven LifeCycle

Phase 설명
Default(Build) 일반적인 빌드 프로세스 모델
Clean 빌드 시 생성되었던 파일들을 삭제
Validate 프로젝트가 올바른지 확인, 필요한 모든 정보를 사용할 수 있는지 확인
Compile 프로젝트의 소스 코드를 컴파일
Test 유닛 테스트를 수행
Package 컴파일된 소스 코드와 리소스들을 jar, war 등의 배포용 패키지로 압축
Verify 통합 테스트 결과에 대한 검사를 실행. 품질 기준을 충족하는지 확인
Install 패키지를 로컬 저장소에 설치
Site 프로젝트 문서와 사이트를 작성 및 생성
Deploy 생성된 package를 원격 저장소에 release