메이븐(Maven) 기본: 자바 기반 프로젝트의 빌드 자동화 도구

메이븐(Maven) 이란?

메이븐(Maven)은 자바 기반 프로젝트에서 빌드, 문서화, 종속성을 관리를 자동화 해주는 도구 입니다.

이전 포스팅 Spring 개발의 시작 STS(Spring Tool Suite) 설치하기 을 통해 알아본 스프링(Spring) 기반 웹 프로젝트를 만들 때 메이븐과 그래들(Gradle) 중 선택하는 과정이 있을 정도로 요즘 대부분 프로젝트는 이 메이븐이 포함되어 있습니다.

구형 웹 개발자(?)인 저는 메이븐을 사용하기 이전 거의 제이쿼리(jQuery)와 자바스크립트(JavaScript) 를 구분하지 않고 학원에서 가르치던 시절에는 이 메이븐과 같은 자동화 도구 없이 직업 lib 디렉토리에 .jar 파일을 추가하며 여러 라이브러리 종속성을 수동으로 관리하고 있었습니다.

위에 이야기에 이어 메이븐을 처음 사용할 때, 가장 체감 되던 것은 pom.xml 이란 파일에 사용할 라이브러리를 작성하면 네트워크를 통해 자동으로 라이브러리가 다운되어 프로젝트에 적용 되었던 점입니다.

그래서 프로젝트를 다른 개발자에게 전달 할 때 라이브러리 파일 까지 줄 필요 없이 제대로 된 pom.xml 설정 값과 함께 전달 되면 라이브러리가 존재하지 않아도 자동으로 다운로드 하였습니다.

그리고 또 이 글을 위해 메이븐 공식홈페이지를 접속해 보니 사이트 에선 메이븐을 “아파치 메이븐(Apache Maven)” 이라 소개하고 있단 점 입니다.

즉, 웹 개발 시 무조건 사용하게 될 오픈 소스 기반 WEB/WAS 서버 아파치와 톰캣을 만든 곳에서 메이븐도 제작 되었다는 점 입니다.

JAR(Java Archive)

잠깐 메이븐을 사용하며 체감 된 내용을 설명할 때 .jar 파일이란 것을 이야기 했습니다. 이 파일은 자바의 클래스, 메타데이터, 리소스 등이 하나의 압축 파일로 묶여 있습니다.

압축 파일인 만큼 알집, 반디집과 같은 소프트웨어로 압축 해제가 가능합니다. STS 도 다운로드 하면 .jar 파일로 되어 있구요.

그래서 이 JAR 파일 형태로 자바 기반의 애플리케이션, 라이브러리, 플러그인 등을 배포 합니다.

자바 라이브러리

자바 라이브러리는 재사용이 가능하도록 배포되는 클래스, 인터페이스 모음이고 위에 언급한 JAR 파일 형태로 다운로드 하여 자신의 웹 프로젝트에 추가하여 사용할 수 있습니다.

이를 언급하는 이유는 메이븐을 사용하기 이전엔 JAR 파일과 같은 라이브러리의 배포와 관리 방법이 각자 다르고 통합되어 있지 않았습니다.

그래서 라이브러리를 개발한 사이트 등에 접속해서 직접 다운로드 했죠. 그런데 메이븐을 사용하게 되면 pom.xml 이란 파일에 라이브러리 관련 설정 값을 입력하면 자동으로 다운로드 하게 됩니다.

이런 자바 라이브러리가 모여 있는 장소는 메이븐 레포지터리(Maven Repository) 라 불립니다.

메이븐 레포지터리(Maven Repository)

메이븐 레포지터리는 메이븐을 사용하는 프로젝트에 사용할 라이브러리와 아티팩트가 모여있는 중앙 집중식 저장소 입니다.

이 덕에 현대의 개발자는 각종 라이브러리를 레포지터리를 통해 아주 쉽게 다운로드 하고 자신의 프로젝트에 적용 할 수 있습니다.

여기서 또 처음 보는 용어가 나왔는데 아티팩트(Artifact) 는 메이븐과 같은 빌드 도구에서 빌드 하는 과정에서 생성, 사용되는 파일들을 말합니다.

JAR 혹은 WAR(Web Application Archive) 파일 형태로 되어 있습니다.

메이븐(Maven) 공식 사이트의 소개

Apache Maven 공식 사이트

메이븐 공식 사이트의 내용을 번역하니 다음과 같이 소개하고 있습니다.


아파치 메이븐은 소프트웨어 프로젝트 관리 및 이해를 돕는 도구입니다.

프로젝트 객체 모델(POM)의 개념을 바탕으로, 메이븐은 프로젝트의 빌드, 보고 및 문서화를 중앙의 정보를 통해 관리할 수 있습니다.

만약 메이븐이 여러분의 프로젝트에 도움이 될 것 같다면, 내비게이션의 “메이븐에 대하여” 섹션에서 더 많은 정보를 찾을 수 있습니다.

이는 메이븐이 무엇인지와 그 주요 기능 중 일부를 포함한 심층적인 설명을 포함하고 있습니다.


어쨌든, 메이븐이 소프트웨어를 만들 때 이를 잘 관리하게 도와준다 이 이야기로 보입니다 😊

pom.xml

pom.xml 은 계속 언급되고 있습니다. pom은 Project Object Model 의 약자 라는데 솔직히 이 글 쓰면서 처음 알았습니다.

이 파일은 메이븐 프로젝트의 기본, 핵심 파일로 XML 형태의 태그를 이용해 프로젝트의 구조, 설정, 종속성 등의 설정을 작성하는 것 입니다.

project, modelVersion, groupId 등 여러가지 요소로 구성되어 있는데 이에 관한 상세 내역은 지금 글 말고 이후 작성할 메이븐 설치 및 적용 과정 포스트 에서 다시 정리해볼까 합니다.

마무리

오늘은 스프링을 기초로 웹 개발에 대해 다시 정리하고 있으면서 메이븐에 대해 한번 정리해 보았습니다.

기초를 다루는 거다 보니 내용이 별 것 없어 보이지만 생각이 정리되는 시간이 되어 좋습니다.

다음 포스트에선 메이븐을 설치하고 사용해 보는 것 까지 다뤄 볼까 합니다.

0 0 votes
Article Rating
Subscribe
Notify of
guest
0 Comments
Oldest
Newest Most Voted
Inline Feedbacks
View all comments
0
Would love your thoughts, please comment.x
()
x
목차
위로 스크롤