관리 메뉴

JIE0025

Build Tool : Maven과 Gradle의 개념과 차이점 본문

백엔드/스프링, 스프링부트, JPA, Spring Webflux

Build Tool : Maven과 Gradle의 개념과 차이점

Kangjieun11 2023. 7. 17. 17:37
728x90

 

✅ 개요

스프링/스프링부트 프로젝트를 하다보면 Maven과 Gradle을 선택하는것부터 나온다. 
초보자 시절엔 그냥 다른 블로그 따라서 Gradle을 선택했었는데...
좀더 세세하게 알아보자.

 
 

✅ Build Tool 

Maven, Gradle은 모두 빌드 관리도구이다.
 
우리는 프로젝트에 여러가지 외부 라이브러리를 사용하게 된다
이때 빌드 관리 도구 (Build Tool) 를 사용하여, 필요한 라이브러리를 자동으로 관리받을 수 있다.
 

⏺ Build Tool 작업 과정

1) 종속성 다운
2) 소스코드를 바이너리코드로 컴파일
3) 패키징
4) 테스트
5) 프로덕션 시스템에 배포
 


 
✅ Maven 

 
메이븐은 자바 전용 프로젝트 관리 도구이다. 
Ant의 대안으로 만들어졌고,
아파치 라이센스로 배포되는 오픈소스 소프트웨어이다. 
 
 

⏺ pom.xml

  • Project Object Model의 약자
  • 메이븐의 핵심 파일이다.
  • 라이브러리를 다운받기 위한 설정을 이 파일에 진행한다.
  • XML 태그로 설정을 기술한다.

 
 


✅ Gradle 

 

  • Gradle은 Maven을 대체하는 빌드 툴이다. 
  • Ant Builder와 Groovy script를 기반으로 구축되어 기존의 Ant의 역할 및 배포 스크립트의 기능을 모두 사용가능하다. 
  • 스프링부트안드로이드에서 사용된다. 
  • 빌드 속도가 Maven보다 빠르다.

https://www.holaxprogramming.com/2017/07/04/devops-gradle-is-faster-than-maven/

Gradle은 정말 Maven보다 100배나 빠를까? · 안녕 프로그래밍

Gradle은 2017년 4월에 3.5 버전을 릴리즈하면서 Build Cache의 특징을 소개하면서 Gradle의 빌드 속도가 드라마틱하게(?) 향상되었다고 발표하였다. Build Cache는 Gradle 3.5에 베타 테스트를 위해 포함된 기

www.holaxprogramming.com

  • Java, Python, C/C++을 지원한다.

 
 

⏺ Gradle 특징

  • 코드로 간결하게 정의하기 때문에 가독성이 좋다 
    • Build Script를 Groovy 기반의 DSL(Domain Specific Language)를 사용 -> 구조적으로 장점이 있다.. 
    • Gradle 설치 없이 Gralde Wrapper를 이용해 빌드를 지원한다
    • Multi Project 빌드를 지원한다.
    • Maven을 완전히 지원한다.

 
 

 

✅ Maven과 Gradle 비교

 

  1. 스크립트 길이 + 가독성은 Gradle이 우세하다.
  2. Maven보다 Gradle이 더 빠르다
  3. 의존성이 늘어나면 스크립트 품질 차이가 크다.
    Maven의 경우 멀티 프로젝트에서 특정 설정을 다른 모듈에서 사용하기 위해 상속을 받아야 하지만
    Gradle은 설정 주입 방식을 사용해서 멀티프로젝트에 적합하다

 
 
 

결국 우리가 스프링부트에서 Gradle을 선택해서 사용하는 이유는..

1) 스프링부트는 간단하게 설정을 할 수 있다는 장점을 살리기 위해 사용함 -> Maven을 통해 XML으로 설정해줄 이유가 없음 -> 새로운 의문 : Maven은 무조건 스프링에만 매칭되는것인가?
2) Gradle이 더 빠르고 확장에 유연하다
 
 
 
 


 
References