프로젝트를 진행할 때 많은 라이브러리들을 활용해서 개발하게 되는데, 그 수가 많아지면 라이브러리를 관리하는 것이 힘들어지는 경우가 생긴다. Maven
은 이러한 문제를 해결해 줄 수 있는 도구이다. Maven
은 내가 사용할 라이브러리 뿐 아니라 해당 라이브러리가 작동하는데 필요한 다른 라이브러리들까지 관리하여 네트워크를 통해 자동으로 다운 받아준다.
POM
은 Project Object Model
의 약자로 이름 그대로 Project Object Model의 정보를 담고있는 파일이다. 이 파일에서 주요하게 다루는 기능들은 다음과 같다.
POM
은 pom.xml
파일을 말하며 Maven
의 기능을 이용하기 위해 POM
이 사용된다.
Gradle
이란 기본적으로 빌드 배포 도구(Build Tool)이다.
Maven
의 경우 XML
로 라이브러리를 정의하고 활용하도록 되어있으나, Gradle
의 경우 별도의 빌드스크립트를 통해 사용할 어플리케이션 버전, 라이브러리등의 항목을 설정할 수 있다.
장점으로는 스크립트 언어로 구성되어 있기 때문에, XML
과 달리 변수선언, if
, else
, for
등의 로직이 구현가능하여 간결하게 구성할 수 있다.
라이브러리 관리 : Maven Repository
를 동일하게 사용할 수 있어서 설정된 서버를 통해 라이브러리를 다운로드 받아 모두 동일한 의존성을 가진 환경을 수정할 수 있다. 자신이 추가한 라이브러리도 레파지토리 서버에 올릴 수 있다.
프로젝트 관리 : 모든 프로젝트가 일관된 디렉토리 구조를 가지고 빌드 프로세스를 유지하도록 도와준다.
단위 테스트 시 의존성 관리 : junit
등을 사용하기 위해서 명시한다.
Maven
에는 Gradle
과 비교문서가 없지만, Gradle
에는 비교문서가 있다.
Gradle
이 시기적으로 늦게 나온만큼 사용성, 성능 등 비교적 뛰어난 스펙을 가지고 있다.
Build
라는 동적인 요소를 XML
로 정의하기에는 어려운 부분이 많다.
- 설정 내용이 길어지고 가독성 떨어짐
Gradle
은 Groovy
를 사용하기 때문에, 동적인 빌드는 Groovy
스크립트로 플러그인을 호출하거나 직접 코드를 짜면 된다.
- Configuration Injection
방식을 사용해서 공통 모듈을 상속해서 사용하는 단점을 커버했다.
Gradle
은 Maven
보다 최대 100배 빠르다.
Maven
의 XML
에서 Gradle
의 Groovy
문법을 익혀야 한다.