본문 바로가기
공부/자료조사

Maven vs Gradle

by 고구밍 2022. 3. 29.

Maven vs Gradle - 장민우님 정리내용

 

  • 프로젝트를 진행하게 되면 자신이 작성한 코드 뿐만 아니라 수 많은 라이브러리를 활용하게 되는데 이 많은 라이브러리를 관리하는 것이 힘들어지는 경우가 발생한다. 이러한 문제를 해결해 주는것 이 Maven과 Gradle 이다. 이들은 내가 사용할 라이브러리 뿐만 아니라 해당 라이브러리가 작동하는데 필요한 다른 라이브러리 까지 관리하여 네트워크를 통해 자동으로 다운 받아준다.

Maven

: 프로젝트의 전체적인 라이프 사이클을 관리하는 도구이다.

POM - Project Object Model(.xml)

: 약자 이름 그대로 project object model의 정보를 담고 있는 파일이다. 이 파일에서 주요하게 다루는 기능은 아래와 같다.

  • 프로젝트 정보: 프로젝트의 이름, 개발자 목록, 라이센스 등
  • 빌드 설정 : 소스,리소스,라이프 사이클별 실행한 플러그인 등 빌드와 관련된 설정
  • 빌드 환경 : 사용자 환경 별로 달라질 수 있는 프로파일 정보
  • POM연관 정보 : 의존 프로젝트, 상위 프로젝트, 포함하고 있는 하위 모듈 등

Gradle

: 기본적으로 빌드 배포 도구이다. 안드로이드 앱을 만들 떄 필요한 공식 빌드 시스템이기도 하며 JAVA,C/C++, Python등 지원한다.

기능을 살펴보면

  • 라이브러리 관리: Maven 레퍼지토리를 동일하게 사용할 수 있어서 설정된 서버를 통하여 라이브러리를 다운로드 받아 모두 동일한 의존성을 가진 환경을 수정할 수 있따. 자신이 추가한 라이브러리도 레퍼지토리 서버에 올릴 수있다.
  • 프로젝트 관리 : 모든 프로젝트가 일관된 디렉토리 구조를 가지고 빌드 프로세스를 유지하도록 도와준다.
  • 단위 테스트 시 의존성 관리 : junit등을 사용하기 위해서 명시한다.

Gradle 이 Maven보다 좋은점

  1. Build라는 동적인 요소를 XML로 정의하기에는 어려운 부분이 많다.
  • 설정 내용이 길어지고 가독성이 떨어짐
  • 의존관계가 복잡한 프로젝트 설정하기에 부적절
  • 상속 구조를 이용한 멀티 모듈 구현
  • 특정 설정을 소수의 모듈에서 공유하기 위해서는 부모 프로젝트를 생성하여 상속하게 해야함(상속의 단점 생김)
  1. Gradle은 그루비를 사용하기 때문에, 동적인 빌드는 Groovy스크립트로 플러그인을 호출하거나 직접 코드를 짜면 된다.
  • Configuration injection 방식을 사용해서 공통 모듈을 상속해서 사용하는 단점을 커버했다.
  • 설정 주입시 프로젝트의 조건을 체크할 수 있어서 프로젝트 별로 주입되는 설정을 다르게 할 수 있다.

'공부 > 자료조사' 카테고리의 다른 글

MySQL 과 H2  (0) 2022.04.01
Getter / Setter 를 사용하면 어떤점이 좋고 나쁠까?  (0) 2022.04.01
Spring vs Spring Boot  (0) 2022.03.28
DNS의 원리  (0) 2022.03.27
restAPI의 put 과 patch 는 어떤 차이점이 있을까요?  (0) 2022.03.26