최근 진행했던 Project를 Maven(메이븐) 기반으로 진행했었다.
그렇다면, 여기서 말하는 Maven은 정확히 무엇을 말하는걸까?
사실 사용하면서, 딱히 큰 관심을 가져본 적이 없었던거 같아, 이번 기회에 가볍게 알아보고 싶었다.
물론, 정확히 모르기 때문에!
먼저 해당 기능을 제공하는 회사의 공식 홈페이지 또는 레퍼런스를 읽는 것이 가장 좋은 방법이라 생각하였고, 그래서 Maven 공식 홈페이지 maven.apache.org/ 를 둘러보기로 하였다.
Introduction
Maven, a Yiddish word meaning accumulator of knowledge, began as an attempt to simplify the build processes in the Jakarta Turbine project. There were several projects, each with their own Ant build files, that were all slightly different. JARs were checked into CVS. We wanted a standard way to build the projects, a clear definition of what the project consisted of, an easy way to publish project information, and a way to share JARs across several projects.
The result is a tool that can now be used for building and managing any Java-based project. We hope that we have created something that will make the day-to-day work of Java developers easier and generally help with the comprehension of any Java-based project.
공식 홈페이지에 개제되어 있는 Maven Project에 대한 소개 원문이다.
다소 긴 내용이지만, 탄생 배경(역사)에 대해서 설명하고 있다. 즉, Maven의 역할을 알 수 있는 셈이다.
핵심 내용은 여기부터가 아닐듯 싶다.
We wanted a standard way to build the projects, a clear definition of what the project consisted of, an easy way to publish project information, and a way to share JARs across several projects
우리는 ⑴프로젝트를 빌드하기 위한 표준 방법과 ⑵프로젝트의 구성 및 ⑶정보를 쉽게 게시하기 위한 방법에 대한 명확한 정의, 그리고 ⑷여러 프로젝트에서 JARs를 상호 공유할 수 있는 방법을 원했다.
바로 이어지는 대목에서는 Maven이 무엇인지를 더욱 정확히 명시하고 있다.
The result is a tool that can now be used for building and managing any Java-based project.
결과적으로, Java 기반 프로젝트를 빌드하고 관리하는데 사용 가능한 도구이다.
즉, Maven은 Build Tool(빌드 도구)의 유형 중 하나인 것이다.
→ 만약, 여기서 더 깊이 들어갈 필요가 없다면, 그 다음 과정은, 'Build Tool' 에 대한 이해로 넘어가야 하겠다.
아무튼, 기술이든 뭐든 제대로 사용하기 위해서는, 그것이 왜 생겼는지 역사부터 알아야 한다고 했다.
그리고 이러한 부분은 공식 홈페이지나 래퍼런스를 통해 정보를 취득하는 것이 바람직하고, 빠르다는 것을 다시 한번 느끼는 중이다.
탐색을 계속하자...
다음으로 개제되어 있는 내용은 Maven의 목표로서, 당연히 그 내용은 Intro와 일맥상통한다. (아래)
Maven’s Objectives
Maven’s primary goal is to allow a developer to comprehend the complete state of a development effort in the shortest period of time. In order to attain this goal, Maven deals with several areas of concern:
- Making the build process easy
- Providing a uniform build system
- Providing quality project information
- Encouraging better development practices
Maven Project에서는 Maven의 목표를 위 네 가지로 보고 있다. (의미상으로는 가장 중요한 부분일 것이다.)
위에서 부터 보자면,
ⓐ Making the build process easy → 빌드 과정을 쉽게 만드는 것
ⓑ Providing a uniform build system → 균일한 빌드 시스템을 제공하는 것
ⓒ Providing quality project information → 양질의 프로젝트 정보를 제공하는 것
ⓓ Encouraging better development practices → 더 좋은 개발 관행을 장려하는 것
하나씩 알아보기에는 겹치는 내용이나, 가성비가 떨어지는 (정리하자면 끝이 없는?) 내용 들이 있어, 그러한 부분들은 직접 읽어보도록 하고...중요한 내용 한 가지만 언급하고자 한다.
ⓑ를 보면, 우선 균일한 빌드 시스템의 제공이라고 제시하고 있는데, 상세 내용으로 프로젝트 개체 모델 (POM) 과 플러그 인 세트를 소개하고 있다.
POM은 프로젝트 의존성, 라이브러리, 프로젝트 생명 주기 관리 등을 제공하는 프로젝트 관리 도구를 말한다.
Maven 프로젝트에서는 설정을 담당하는 pom.xml을 말한다.
(※ 프로젝트 생성 시, 가장 기본적으로 생성되는 POM, 프로젝트의 기본 정보)
<project>
<modelVersion></modelVersion>
<groupId></groupId>
<artifactId></artifactId>
<version></version>
</project>
pom.xml의 경우, dependency를 추가하는 방법이나 project 구성 정보와 같이, 모든 pom.xml에서 공통적으로 사용되는 내용과 구조들이 있는데, 이것은 해당 부분들에 대한 이해와 습득이 이루어 진다면, 다양한 Maven 프로젝트 빌드 환경에서 적응하기 쉬워지고, 그 만큼 시간을 아낄 수 있음을 시사한다.
즉, 이러한 부분에서 균일한 빌드 시스템을 추구하는 것이다.
Maven 자체가 플러그인을 구동해주는 프레임워크(plugin execution framework)라는 점에서 위 내용들은 Maven에 대한 가장 기초적인 정의가 되었다.
사실 위 내용 보다, 더 깊게 정의를 알아 가는 것은 가성비가 없다.
그렇기에, Maven을 프로젝트에서 좀 더 범용성 있고, 실요성 있게 사용하기 위해서는 플러그인(plugin)에 대한 이해와 사용법으로 넘어가야 할 것이다.
이 블로그는 개인이 혼자 공부해가며 내용을 정리하는 용도로 활용되고 있습니다.
잘못된 지식이나 이론을 게시하지 않도록 주의하고 있습니다.
'Spring > Spring Web 개발' 카테고리의 다른 글
STS4 - Spring boot project 생성 (0) | 2021.02.01 |
---|