오늘은 Maven
에 대해서 알아볼 것이다.
Maven
은 Spring
과 함께 많이 언급되는 존재인데, 그 이유와 정확한 정의를 알아 보고자 한다.
Maven
은 자바 프로젝트의 빌드(Build)
를 자동화 해주는 Build Tool
이다.
간단하게 말해서 자바 소스를 Complie
하고 Package
해서 Deploy
하는 일을 자동화 해주는 것이다.
이클립스로 프로젝트를 진행해본 사람은 Maven
이라는 단어를 본 적이 있을 것이다! 필자는 IntelliJ
를 사용하지만 자바 계열 IDE에서 흔하게 볼 수 있는 단어다.
그리고 우리들은 이미 Maven
을 사용하고 있었다.
IDE에는 Maven
이 내장 되어 있고, pom.xml
을 통해 Dependency
를 추가하고 삭제하여 라이브러리를 관리 해왔다.
Maven
의 정의는 아래와 같다
Apache Maven is a software project management and comprehension tool. Based on the concept of a project object model (POM), Maven can manage a project's build, reporting and documentation from a central piece of information.
프로젝트를 빌드해주고 라이브러리를 관리하며 개발자들이 업무 환경에서 협력하며 일을 할 수 있도록 개발 된 도구이다.
예를 들어보자, 10명이서 프로젝트를 진행하는데 라이브러리를 추가하고 삭제해야 하는 과정이 생겼다. 여기서 사용하는 라이브러리 수가 몇개 안된다면 jar
를 추가하는 방식으로 사용할 수 있지만, 프로젝트의 사이즈가 커지고 사용하는 라이브러리가 많아진다면 관리가 어려워진다.
메신저 등을 이용하여 라이브러리를 전송하고.. 받아서 import
하고,, 이런 방식보다 dependency
를 추가하고 삭제하여 라이브러리를 관리한 pom.xml
파일만 공유하는게 훨씬 효율적인 방법이다.
또한 Maven은 필요한 라이브러리의 하위 라이브러리까지 버전에 맞게 설치해준다.
예를 들어, 팀원에게 pom.xml
을 통해서 dependency
에 추가하고 라이브러리를 설치한다고 하면, dependency
에 명시되어있는 라이브러리를 사용하기 위한 다른 하위 라이브러리도 알아서 같이 설치를 해준다.
123
이라는 라이브러리를 사용하기 위해 321
이라는 라이브러리가 필요하다면, dependency
에 123
라이브러리만 넣는다. 그러면 Maven
에서 알아서 321
라이브러리를 설치 해준다.
Spring
프로젝트 중, 분명 똑같은 환경에서 프로젝트를 다른 개발자에게 받는 상황이 많이 생긴다.
이 상황에서 Maven clean...Maven install
등 하라는 대로만 한다면 정확한 이유는 모르고 그 순간만 해결하는 상황이 반복 될 것이다.
Spring
을 해야하는 상황에서 정확하게 문제점을 파악하고 해결하는 것이 중요하기 때문에 알고 넘어가야 한다.