Maven 이란?
메이븐은 자바 프로젝트의 빌드(build)를 자동화 해주는 도구이다.
프로젝트 객체 모델 (Project Object Model)이라는 개념을 바탕으로 프로젝트 의존성 관리, 라이브러리 관리, 프로젝트 생명주기 관리 기능 등을 제공한다.
프로젝트를 위해 작성한 Java 코드나 다른 자원들 (.xml,.jar,.properties)를 JVM이나 Tomcat 같은 WAS가 인식할 수 있는 구조로 패키징해 준다.
Maven을 사용하는 이유
프로젝트를 진행하는데에 있어 라이브러리의 수가 많아진다면? 특히나 혼자
서 개발하지 않는 경우에는 더욱 라이브러리의 관리가 어려워진다. 협력하여 개발하는 데에 있어 환경이 같지 않을 경우 여러 가지 예측하지 못한 변수들이 발생할 수 있다.
Maven의 장점
- 편리한 의존성 라이브러리 관리
- 정해진 빌드 방법을 사용하여 협업에서 유리하게 작용
- 다양한 플러그인을 통해 많은 작업이 자동화됨
Gradle이란?
Gradle은 기본적으로 빌드 배포 도구(Build Tool)이다. JAVA, C/C++, Python 등을 지원한다.
Maven은 XML로 라이브러리를 정의하고 활용하도록 되어있으나 Gradle 은 별도의 빌드 스크립트를 통하여 사용할 어플리케이션 버전, 라이브러리등의 항목을 설정할 수 있다.
Gradle을 사용하는 이유
별도의 빌드 스크립트를 사용하여 코드가 훨씬 간결하다.
Gradle은 프로젝트의 어느 부분이 업데이트 되었는지 알기 때문에, 빌드에 점진적으로 추가할 수 있다.
특히 업데이트가 이미 반영된 빌드의 부분은 더 이상 재실행되지 않기 때문에 build 시간이 매우 단축될 수 있다.
Gradle의 장점
- 라이브러리 관리 : Maven Repository를 동일하게 사용할 수 있어서 설정된 서버를 통하여 라이브러리를 다운로드 받아 모두 동일한 의존성을 가진 환경을 수정할 수 있다. 자신이 추가한 라이브러리도 repository 서버에 올릴 수 있다.
- 프로젝트 관리 : 모든 프로젝트가 일관된 디렉토리 구조를 가지고 빌드 프로세스를 유지하도록 도와준다.
- 단위 테스트 시 의존성 관리 : junit 등을 사용하기 위해서 명시한다.
Gradle이 Maven보다 좋은 점
- Gradle은 업데이트가 되었는지 안 되었는지를 체크하기 때문에 이미 업데이트 된 작업에 대해서 작업이 재실행되지 않으므로 빌드 시간이 훨씬 단축된다.(100배 정도 라고 함.)
- Maven의 경우 멀티 프로젝트에서 특정 설정을 다른 모듈에서 사용하려면 상속을 받아야 하지만 gradle은 설정 주입 방식을 제공하여 사용하는 데에 편리하다.
- Gradle은 concurrent에 안전한 캐시를 허용한다. 2개 이상의 프로젝트에서 동일한 캐시를 사용할 경우, 서로 overwrite되지 않도록 checksum 기반의 캐시를 사용하고, 캐시를 repository와 동기화시킬 수 있다.
정리
사용자가 정의한 빌드를 작성하기 위해서는 Gradle을 사용하는 것이 편의성, 성능, 두 부분에서 모두 뛰어나다.
또한 캐시 사용 안정성에 대해서도 Gradle이 유리하다.
최근에는 Maven의 사용이 많이 줄고 Gradle의 사용이 늘고 있는 추세라고 한다.
'백엔드' 카테고리의 다른 글
Jar VS War (0) | 2022.11.15 |
---|---|
REST API (0) | 2021.11.28 |
Redirect & Forward , Servlet과 JSP 연동 (0) | 2021.08.29 |
JSP 개념 (0) | 2021.08.21 |
Servlet (0) | 2021.08.15 |