Back-end/Spring

Maven 이란?

yujin0517 2023. 7. 31. 18:55

Maven은 자바 프로젝트의 빌드를 자동화해주는 빌드 도구이다. 

 Maven은 프로젝트의 전체적인 라이프사이클을 관리하는 도구이다.

프로젝트 POM이라는 개념을 바탕으로 프로젝트의 의존성 관리, 라이브러리관리, 프로젝트 라이프사이클 관리 기능 등을 제공하는 프로젝트 관리 도구이다.

플러그인을 기반으로 소스 코드로부터 배포 가능한 산출물을 만들어내는 빌드 기능을 제공한다.


<라이브러리 관리 기능>

사용할 라이브러리 이름과 버전만 명시하면 라이브러리를 자동으로 내려받고 관리해 준다.

<빌드 기능>

애플리케이션을 빌드하는 표준화된 방법을 제공한다.

<Maven 아키텍쳐>


1. settings.xml

settings.xml은 Maven tool 자체에 관련된 설정을 담당한다.

2. pom.xml 

하나의 자바 프로젝트에 빌드 도구로 Maven을 설정했다면, 프로젝트 최상위 디렉토리에 'pom.xml' 이라는 파일이 생성된다. pom.xml은 POM(Project Object Model)을 설정하는 부분으로 프로젝트 내 빌드 옵션을 설정하는 부분이다. 

<?xml version="1.0" encoding="UTF-8"?> 
<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>jpa-basic</groupId> 
     <artifactId>ex1-hello-jpa</artifactId> 
     <version>1.0.0</version> 
     
     <dependencies> 
         <!-- JPA 하이버네이트 --> 
         <dependency> 
             <groupId>org.hibernate</groupId> 
             <artifactId>hibernate-entitymanager</artifactId> 
             <version>5.3.10.Final</version> 
         </dependency> 
         
         <!-- H2 데이터베이스 --> 
         <dependency> 
             <groupId>com.h2database</groupId> 
             <artifactId>h2</artifactId> 
             <version>1.4.199</version> 
     	</dependency> 
     </dependencies> 
     
</project>
<!--김영한 강사님 자바 ORM 표준 JPA 프로그래밍 강의 자료 일부-->

<modelVersion>: Maven의 pom.xml의 모델 버전이 4.0.0 버전

<groupId>: 프로젝트를 생성한 그룹명

<artifactId>: 프로젝트에서 생성되는 기본 artifact의 고유 이름

<version>: 애플리케이션의 버전 

<dependencies>: 프로젝트에서 사용할 라이브러리를 지정

*artifact: 자바 프로젝트를 빌드할 때 많이 사용되고, Maven에서는 빌드로 생성되는 프로젝트의 결과물을 의미한다. 자바 프로젝트의 성격에 따라 다르지만 일반적으로 .jar, .war, .ear 등의 확장자를 가진다. 


 

(아키텍쳐 사진 출처: https://cheershennah.tistory.com/151)