Maven이란 무엇인가(1)

겔로그·2022년 7월 2일
0

Spring Boot

목록 보기
9/21

개요

Spring 시리즈를 읽다가 갑자기 Maven 설명에 대한 글을 봐서 많이 당황했을 것이다. 하지만 Maven에 대한 이해없이 Spring을 사용한다는 것은 그저 라이브러리를 pom.xml에 복붙해 사용하는 개발자였기 때문이라고 생각한다.

물론, 나 또한 Maven을 단순하게 의존성 관리 및 빌드용으로만 사용했기 때문에 Maven에 대해 자세히 몰랐었고 그렇기 때문에 발생한 여러 문제를 빠르게 해결하지 못한 경험이 있다.

이번 글을 통해 Maven에 대한 이해를 조금이나마 쌓고자 하는 의미를 두고 이를 공유하고자 한다.

Maven이란?

Maven은 Apache 소프트웨어 재단에서 만든 오픈 소스 소프트웨어이며 자바용 프로젝트 관리 도구이다. 우리는 Maven을 이용하여 보다 다음과 같은 이점을 얻을 수 있다.

Maven 특징

  • 빌드 프로세스를 쉽게 만들어준다.
  • 균등한 빌드 시스템을 제공한다.
  • 퀄리티 있는 프로젝트 정보를 제공한다.

그럼 어떻게 다음과 같은 특징들을 Maven을 통해 제공하는지 알아보는 시간을 가져보자

프로젝트 생성

우리는 Spring 프로젝트를 생성할 경우 빌드 도구를 일반적으로 Gradle 또는 Maven 둘 중 하나를 선택한다. 이 때, 빌드 도구를 Maven으로 선택하여 프로젝트를 생성한다면 다음과 같은 프로젝트가 생성된다.


생소한 내용이 많지만 Maven을 빌드 도구로 선택할 경우 다음과 같은 파일들이 프로젝트에 추가된다. 하나하나 알아가보자.

  • mvnw : 별도의 maven없이 maven을 이용할 수 있도록 도와주는 스크립트 파일(maven wrapper의 약어)
  • mvnw.cmd : mvnw의 스크립트 배치 버전이다.
  • pom.xml : Maven의 빌드 정보를 담고 있는 파일, 프로젝트 내 빌드 옵션을 설정하는 부분
  • .mvn : maven wrapper가 담겨있는 폴더

이처럼 메이븐을 사용할수도, 별도로 설치하지 않아도 스크립트 파일을 통해 이용할 수 있도록 친절하게 제공해주고 있다. mvnw은 그냥 사용하면 되겠는데 pom.xml은 빌드 정보를 담고있는 파일로서 조금 더 자세하게 알아볼 필요가 있을 것 같다.

Pom.xml

방금도 설명했듯이 pom.xml은 Maven의 빌드 정보를 담고 있는 파일로서, 다양한 설정을 통해 maven 빌드 옵션을 설정할 수 있다. 우리는 하나의 pom.xml만 있으면 다른 프로젝트에서 복붙을 통해 편리하게 프로젝트간 동일한 빌드가 가능해진다.

pom.xml에 대해서는 좀 더 자세하게 알아볼 필요가 있어 다음 장에서 보다 더 구체적으로 다루어 보겠다.

Maven Build Lifecycle


Maven의 생애주기는 크게 8가지 단계로 나뉘어진다.

  • Validate: 프로젝트 구조가 정확한지 유효성을 검사하는 단계이다. 한 예시로, 모든 의존성이 로컬 레포지토리에 다운로드 되어있는지 확인하는 단계라고 생각하면 된다.

  • Compile: 소스코드를 컴파일하여, 자바 파일을 target 폴더에 클래스 파일로 전환하는 역할을 수행한다.

  • Test: 프로젝트의 단위테스트를 수행한다.

  • Package: jar 또는 war 파일로 컴파일하여 패키징하는 단계이다.

  • Integration test: 프로젝트에 대한 통합 테스트를 수행하는 단계이다.

  • Verify: 프로젝트가 실행되는지 검증하는 단계이다.

  • Install: 패키지된 코드를 로컬 Maven 저장소에 설치합니다.

  • Deploy: 패키지 된 코드를 원격 저장소에 저장하고, 다른 개발자와 공유하는 단계이다.

Maven은 8단계로 구성된 빌드 도구이며, 만약 n번째를 수행한다고 가정할 때, n번째 이전의 모든 단계 또한 수행한다.
(7단계시 1~6단계 또한 자동으로 실행)

Reference

apache maven
wiki-apache
코딩하는 혁이
정아마추어 코딩 블로그
geeksforgeeks

profile
Gelog 나쁜 것만 드려요~

0개의 댓글