BUILD_SSO

[Spring] Maven vs Gradle 의 차이점과 특징 본문

Spring

[Spring] Maven vs Gradle 의 차이점과 특징

sohyeonnn 2023. 6. 23. 15:42

Spring을 학습한 사람이라면 Maven과 Gradle을 한 번쯤은 들어봤을 것이다. 이 차이에 대해 단순히 가독성, 코드 유지 보수 정도로만 알고 있던 찰나에 실질적인 차이점이 무엇인지 숙지할 겸 글을 작성하게 되었다.

 

◼ 빌드 관리 도구(Build Tool)

Maven과 Gradle은 둘 다 빌드 관리 도구이다.

빌드 관리 도구란, 프로젝트에서 작성한 Java 코드와, 프로젝트 내의 xml, properties, jar 파일들을 JVM이나 WAS가 인식할 수 있도록 패키징 해주는 빌드 과정을 관리하는 도구를 뜻한다.

  • 개발에 필요한 다양한 외부 라이브러리들을 다운로드하거나 사용해야 할 때,
    번거롭게 각 라이브러리들을 모두 다운로드할 필요 없이, 빌드 도구 설정 파일(Maven-pom.xml/Gradle-build.gradle)에 필요한 라이브러리 종류와 버전들, 종속성 정보를 포함하여 필요한 라이브러리들을 설정 파일을 통해 자동으로 다운로드해주고 이를 간편히 관리해 주는 도구이다.
  • 즉, 프로젝트 생성, 테스트 빌드, 배포 등의 작업을 위한 전용 프로그램이라 할 수 있다.

 

◼ Maven

  • 메이븐은 Java 전용 프로젝트 관리 도구이다.
  • 아파치 Ant의 대안으로 만들어졌으며, 아파치 라이센스로 배포되는 오픈 소스 소프트웨어이다.
  • 메이븐은 그 라이브러리들과 연관된 라이브러리들까지 거미줄처럼 모두 연동이 되서 관리된다.
    ➡ 즉, 네트워크를 통해 연관된 라이브러리까지 같이 업데이트를 해준다.
  • pom.xml을 통해 라이브러리를 관리한다.

🔔 pom이란?

Project Object Model의 약자로 

프로젝트 정보 - 프로젝트 이름, 라이센스

빌드 설정 - 소스, 리소스, 라이프 사이클별 실행한 plugin 등 빌드와 관련된 설정들

빌드 환경 - 사용자 환경 별로 달라질 수 있는 프로필 정보

pom 연관 정보 - 의존 프로젝트 (모듈), 상위 프로젝트, 하위 모듈

의 정보를 담고있다.

 

◼ Gradle

  • 빌트 관리 도구인 Ant Builder와 Groovy 스크립트 기반으로 만들어져, 기존 Ant의 역할과 배포 스크립트의 기능을 모두 사용 가능한 Maven을 대체할 수 있는 프로젝트 구성, 관리, 빌드, 테스트, 배포 도구이다.
  • 스프링부트와 안드로이드에서 사용 가능하며, 안드로이드의 공식 빌드 시스템이다.
  • Java, Python, C/C++ 등을 지원한다.
  • 빌드 속도가 메이븐에 비해 10 ~ 100 배 빠르다.
  • 그래들은 프로젝트의 어느 부분이 업데이트되었는지 파악한다. 때문에 빌드에 점진적으로 추가가 가능하며 업데이트가 반영된 부분은 더 이상 재실행 되지 않는다
    ➡ 재실행 시간을 줄여 빌드 시간을 단축한다.

 

◼ Maven vs Gradle

  • Gradle이 스크립트 작성이 더 짧고 간편하게 작성된다.
    ➡ 가독성 면에서 우세하다.
  • 빌드와 테스트 실행 결과가 Gradle이 더 빠르다.
    ➡ Gradle 같은 경우 캐시로 관리하기 때문에 테스트를 반복할수록 실행 결과 시간 차가 더욱 커진다.

그래들 공식 문서의 gradle vs maven 속도 비교

  • 멀티 프로젝트에서의 설정 관리
    ➡ 메이븐의 경우 상속을 통해 특정 설정을 다른 모듈에서 사용 가능하게 하지만,
    ➡ 그래들의 경우 설정 주입 방식을 제공한다.

 

이외에도, 그래들 공식 문서에서 Gradle과 Maven 을 비교하며 그래들의 강점으로 유연성, 퍼포먼스(속도라고 보면 된다), User Experience(코드 가독성), 의존성 관리를 작성해놓았다.


참고

https://gradle.org/maven-vs-gradle/

 

Gradle | Gradle vs Maven Comparison

High-level performance and feature comparison between Gradle and Maven

gradle.org

https://www.interviewbit.com/blog/gradle-vs-maven/

 

Gradle Vs Maven: What’s The Difference? [2023]

Table Of Contents show Introduction What is Gradle? Key features of Gradle What is Maven? Key features of Maven Difference Between Gradle and Maven Advantages and Disadvantages of Gradle and Maven…

www.interviewbit.com

 

'Spring' 카테고리의 다른 글

[Spring] @RequestMapping과 @GetMapping의 차이  (1) 2023.06.29
Comments