본문으로 바로가기

Maven 과 Gradle 차이점

category 카테고리 없음 2020. 4. 27. 21:59

Maven vs Gradle

Maven은 무엇인가?

  • 빌드를 쉽게 할 수 있도록 해준다.
  • pom.xml을 이용한 정형화된 빌드 시스템
  • 뛰어난 프로젝트 정보 제공
    • Change log document created directly from source control
    • Cross referenced sources
    • Mailing lists
    • Dependency list
    • Unit test reports including coverage
  • 개발 가이드 라인 제공
  • 테스트 소스 코드를 별도의 병렬 소스 트리에 보관
  • 테스트 케이스 명명 규칙을 사용하여 테스트 위치 및 실행
  • 테스트 케이스에 환경을 설정하고 테스트 준비를 위해 빌드를 사용자 정의하지 않아도 된다.
  • 새로운 기능을 쉽게 설치할 수 있고 업데이트할 수 있음

Gradle이란 무엇인가?

  • 빌드 스크립트가 '프로그래밍 언어'로 되어있다. 자바와 같이 JVM위에서 동작하는 groovy언어로 작성
  • Ant처럼 유연한 범용 빌드 도구
  • Maven을 사용할 수 있는 변환 가능 컨벤션 프레임 워크
  • 멀티 프로젝트에 사용하기 좋음
  • Apache Ivy에 기반한 강력한 의존성 관리
  • Maven과 Ivy 레파지토리 완전 지원
  • 원격 저장소나, pom, ivy 파일 없이 연결되는 의존성 관리 지원
  • 빌드를 설명하는 풍부한 도메인 모델

Maven VS Gradle

  • Gradle에는 비교문서가 존재합니다.
  • Gradle이 시기적으로 늦게 나온만큼 사용성, 성능 등 비교적 뛰어난 스펙을 가지고있다.

Maven 대비 Gradle의 장점

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