Maven VS Gradle

Tina Jeong·2020년 12월 1일
1

https://gradle.org/maven-vs-gradle/
위 포스트 보고 번역. Gradle 입장에서 썼으니 당연히 장점/개선점 위주로 비교 했다.

1. Flexibility

Maven은 자바 기반의 프로젝트 관리만 가능하지만 Gradle은 자바 외에도 코틀린/C.C++ 등의 다른 언어 빌드가 가능하다.
물론 Maven도 커스텀해서 사용가능하지만, Gradle은 커스텀 과정을 모두 자동화 해두었고, 그 과정에서 발생하는 이슈도 충분히 신경 썼다.

2. Performance

사실 퍼포먼스가 가장 중요한데, 빌드 소요 시간을 기약적으로 향상시켰다는 게 Gradle이 강조하는 큰 강점이다. 어떻게 향상 시켰냐면,

  1. Incrementality: 태스크를 트래킹하며 필요할 때만(파일이 변경되었을때 라든지) 추가 작업함
  2. Build Cache : 동일한 input에 대해서는 output을 재사용함.(심지어 다른 머신 간에도)
  3. Gradle Daemon : 길게 살아있는 프로세스를 만들어 메모리 상에서 정보들을 보유하고 있도록 함.

3. User Experience

  1. IDE 와 연계된 다양한 지원(ex. modern CLI)
  2. 빌드 스캔이라는 interactive web-based UI를 제공한다.(들가보니 없는 페이지라고 해서 지금도 있는 기능인지는 모르겠다)

4. Dependency Management

  1. dependency selection을 통해 사용자가 의존성을 커스텀하여 사용할 수 있다.
  2. substitution rules을 통해 composing build가 가능하다.
  3. dependency scope을 커스텀할 수 있다. (maven built-in scope이 별로 없다.) Gradle에서는 unit and integration test를 구분하여 빌드 실행할 수 있다.
  4. 동일한 의존성이 여러개 존재하는 경우 가장 높은 버전을 찾아서 적용해준다. 물론 버전 다운 강제도 가능하다.
  5. 라이브러리를 만드는 사람은 api dependency와 implementation dependency를 취사 선택하여 원하지 않는 라이브러리가 소비자의 클래스패스로 들어가는 것을 방지할 수 있다.
    (api vs implementation : https://docs.gradle.org/current/userguide/java_library_plugin.html#sec:java_library_separation)
profile
Keep exploring, 계속 탐색하세요.

0개의 댓글