Spring 프레임워크로 프로젝트를 진행하려하다 보니 Maven 프로젝트에 추가를 해주어야 했다 그런데 메이븐에 대해 아는게 없어서 정리해야겠다는 생각이 들었다ㅠ 왜이렇게 어려운게 많은거야 초보는 운다,,,🥲
Maven이란?
메이븐은 자바용 프로젝트 관리 도구이다.
Maven은 Apache사에서 만든 빌드툴(build tool)로써 pom.xml파일을 통한 빌드 시스템으로 프로젝트 관리를 해준다. 이렇게 프로젝트의 전체적인 라이프 사이클을 관리한다고 한다.
Java로 개발하다 보면 다양한 라이브러리를 필요로 하게 되는데, *pom.xml 파일에 필요한 라이브러리만 적으면 Maven이 알아서 다운받고 설치해주고 경로까지 지정해준다.
사용해보니 정말 간편한 친구였당! 전엔 라이브러리 다운받고 옮기고 막 이랬는데ㅋㅋㅋㅎㅎ
코드로 살펴보자면 ↓
<?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 https://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion> <!-- Maven 2 버전 이후 POM의 경우 항상 4.0.0 -->
<groupId>edu.kh</groupId> <!-- 최상위 패키지 1, 2레벨 -->
<artifactId>project</artifactId> <!-- 최상위 패키지 3레벨 == context-path -->
<name>boardProject</name> <!-- 프로젝트 명 -->
<packaging>war</packaging> <!-- 배포 형식 -->
<version>1.0.0--BUILD-SNAPSHOT</version>
<!-- properties : 메이븐이 적용된 프로젝트에서 공통적으로 사용할 값을 작성하는 태그(전역 변수) -->
<properties>
<java-version>11</java-version> <!-- 프로젝트에서 사용할 자바 버전 -->
<org.springframework-version>5.3.14</org.springframework-version> <!-- 스프링(Spring) 프레임워크의 버전을 지정한다 여기서는 5.3.14를 사용하도록 지정 -->
<org.aspectj-version>1.9.9.1</org.aspectj-version>
<org.slf4j-version>1.7.25</org.slf4j-version>
</properties>
<!-- dependencies : Maven 프로젝트는 외부 저장소와 의존 관계를 맺고 있어 프로젝트에 필요한 파일을(라이브러리)
사용자가 직접 받을 필요 없이 해당 태그 내에 지정된 형식으로 작성하면 네트워크를 통해 외부 저장소에서 자동으로 얻어와 세팅함.
즉 dependencies 태그 안에는 프로젝트와 의존관계에 있는 라이브러리들을 관리한다 -->
<!-- Spring - Mybatis 연결 모듈, 연결 역할을 하는 라이브러리 -->
<!-- https://mvnrepository.com/artifact/org.mybatis/mybatis-spring -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis-spring</artifactId>
<version>2.0.6</version>
</dependency>
이와같이 사용하면 나는 mybatis-spring 라이브러리를 사용할 수 있게된다.
메이븐은 한 개의 모듈을 아티팩트라는 단위로 관리한다.
즉, 각 모듈은 독립적으로 빌드될 수 있는 단위이며, 빌드된 결과물이 아티팩트가 된다.
주석에 있는 말을 풀어서 설명해보자면 메이븐은 POM에서 선언된 dependency설정으로 빌드 및 배포시 필요 라이브러리들을 관리하고 로컬 및 원격 저장소에서 선언된 라이브러리들을 다운받아 사용한다. 개발자는 프로젝트에 사용할 라이브러리를 직접 업로드하지 않고 pom.xml에 dependency로 정의만 해두면 메이븐이 repository에서 검색해서 자동으로 추가해준다. 심지어 참조하는 모든 라이브러리 까지 찾아서 추가해준다.
Maven 의존성 분석 순서
의존성 <dependency> 필수 선언 항목
<groupId>: 부분적인 프로젝트나 조직에서의 라이브러리 집합을 식별하기 위해 제공한다.
<artifactId>: 프로젝트의 실제 이름으로 groupId와 합쳐져 프로젝트 식별에 쓰인다.
<version>: 선언한 의존성 artifact의 버전으로 프로젝트 내에서 사용하는 artifact의 일관성을 추구할 수 있다.
정리를 잘하셨네요!! 잘 보고 갑니다~~~ :)