Gradle vs Maven 비교

Gradle vs Maven 비교

유연성(Flexibility)

구글에서 안드로이드 공식 빌드 도구를 Gradle로 선택함 Gradle이 확장가능한 방식으로 모델링 되었기 때문이다.

Maven은 커스터마이징을 힘들고 때로는 불가능하게 엄격한 모델을 제공한다. 이것은 Maven 빌드를 더 쉽게 이해할 수 있지만,
특별한 요구 사항이 없는한 많은 자동화 문제에 부적합 하다.

성능(Performance)

가장 큰 차이점은 Gradle의 작업 회피 및 증분 메커니즘입니다.

Gradle을 Maven보다 훨씬 빠르게 만드는 상위 3 가지 기능은 다음과 같습니다.

  • 증분 - Gradle은 작업의 입력 및 출력을 추적하고 필요한 작업 만 실행하고 가능한 경우 변경된 파일 만 처리하여 작업을 방지 합니다.

  • Build Cache - 다른 Gradle 빌드의 빌드 출력을 시스템 간을 포함하여 동일한 입력으로 재사용합니다

  • Gradle Daemon - 빌드 정보가 메모리에 “최신”으로 유지되는 수명이 긴 프로세스입니다.

사용자 경험(User Experience)

Maven이 오래동안 사용되면서 많은 IDE에서 지원되고 있다. 이것은 Maven이 좀더 유리하다.

하지만 Gradle의 IDE 지원은 빠르게 향상되고 있다. 예를 들면 gradle 에는 훨씬 향상된 IDE 경험을 제공하는 Kotlin 기반 DSL 이 있습니다.

IDE가 중요하더라도 많은 사용자가 명령 줄 인터페이스를 통해 빌드 작업을 실행하는 것을 선호합니다.
Gradle은gradle tasks와 같은 검색 기능과 향상된 로깅 및 명령 줄 완성 기능을 갖춘 최신 CLI를 제공합니다 .

마지막으로 Gradle은 빌드 디버깅 및 최적화를위한 대화 형 웹 기반 UI 인 빌드 스캔을 제공합니다.
또한 조직 내에서 호스팅하여 빌드 기록을 수집하고 추세 분석을 수행하고 디버깅을 위해 빌드를 비교하거나 빌드 시간을 최적화 할 수 있습니다.

의존성 관리(Dependency Management)

두 빌드 시스템 모두 구성 가능한 저장소의 종속성을 해결할 수있는 기본 제공 기능을 제공합니다.
둘 다 종속성을 로컬에서 캐시하고이를 병렬로 다운로드 할 수 있습니다.

라이브러리 소비자로서, Maven은 의존성을 오버라이드 할 수있게 해준다.
Gradle은 한 번 선언 할 수 있고 프로젝트 전체에서 원하지 않는 종속성을 처리 할 수있는 사용자 정의 가능한 종속성 선택 및 대체 규칙 을 제공합니다 .
이 대체 메커니즘을 통해 Gradle은 여러 소스 프로젝트를 함께 구성 하여 복합 빌드 를 만들 수 있습니다 .

Maven은 내장 된 의존성 범위가 거의 없으므로 테스트 픽스처 또는 코드 생성과 같은 일반적인 시나리오에서 어색한 모듈 아키텍처를 강제합니다.
예를 들어 단위 테스트와 통합 테스트 사이에는 별개의 문제가 없습니다.
Gradle을 사용하면 더 나은 모델링 및 빠른 빌드를 제공하는 사용자 지정 종속성 범위를 사용할 수 있습니다 .

도서관 제작자 인 Gradle은 제작자가 불필요한 라이브러리가 소비자의 클래스 패스에 누출되지 않도록 ‘API’및 ‘구현’의존성 을 선언 할 수 있습니다 .
Maven을 사용하면 제작자가 선택적 종속성을 통해 메타 데이터를 제공 할 수 있습니다 .

참조