(Spring) Why Maven? Why Gradle?

2022. 8. 7. 21:59Spring

반응형

Spring Initializer를 사용하거나, Intellij를 사용하면 처음 Spring Project를 만들 때, 두 가지 빌드 방법을 볼 수 있다.

 

Maven과 Gradle

 

둘 다 사용해보신 분들도 있을 것이고, 하나만 사용해 보신 분들도 있으리라 생각된다.

 

 

이번 글은 둘 중 하나만 사용해보신 분들을 위해서 작성되었다.

 

 

🧐What is Maven?


Maven은 아파치 재단에서 만들어진 오픈소스 툴로, 프로젝트 매니징 툴이다.
Project Obejct Model(POM)을 기반으로 하고 있으며, 프로젝트 빌드, 리포트, 도큐먼트 작업까지 관리할 수 있다.

 

Maven을 사용해보신 분들은 알겠지만, POM.xml을 기반으로 프로젝트를 빌드한다.

 

Maven이 추구하는 목표는 다음과 같다.

 

  • 빌드 프로세스를 쉽게 만드는 것.
  • 빌드 시스템의 양식을 제공하는 것.
  • 양질의 프로젝트 정보를 제공하는 것.
  • 더 나은 개발 방법을 장려하는 것.

 

메이븐의 장점은 여러가지가 있지만, 필요한 라이브러리를 Pom.xml에 저장하면, 저장된 라이브러리 뿐만 아니라

 

해당 라이브러리가 작동하는데에 필요한 라이브러리들 까지 관리해서 네트워크를 통해 자동으로 다운받아 준다.

 

 

라이브러리도 자동으로 다운받아 주고, 프로젝트도 빌드해주니 매우 편한 관리 툴처럼 보인다.

 

 

하지만 단점도 존재한다.

 

첫 번쨰로, 메이븐은 아주 엄격한 구조로 이루어져 있다.

 

xml 구조로 이루어져있는 maven은 그 구조에서 하나라도 벗어나면 빌드가 이루어지지 않는다.

 

 

두 번쨰로, 모든 것을 pom.xml 파일 하나로 관리하기 때문에 파일의 가독성이 매우 떨어진다.

 

xml 파일을 본 사람들은 알겠지만, 저 태그가 무엇을 의미하는지를 알아야하고, 

 

태그도 너무 많아서 머리가 아프다.

 

 

이 외에도 다양하게 레포지토리 관리의 불편함(경험해보지는 못했다.), 디테일한 빌드 기능의 부재 등이 있다고 한다.

 

 

그럼 Gradle은 어떨까?

 

 

🧐What is Gradle?


Gradle은 Maven의 대항마라고 할 수 있다.

 

 

Gradle은 오픈소스 빌드 자동화 툴로 유연한 툴을 제공한다.

 

Gradle이 내세우는 여러가지 장점이 있다.

 

  • High performance
  • JVM foundation
  • Conventions
  • Extensibility
  • IDE support
  • Insight

 

 

Gradle은 입력 혹은 출력이 변경 됐을 때, 필요한 작업만을 실행함으로써 불필요한 작업을 줄인다.

 

 

또한 빌드 캐시를 사용해서 이전에 실행했던 것에 대한 정보나 필드 캐시가 있는 다른 시스템의 작업 출력을 재사용 할 수 있다.

 

 

실제로 Gradle은 이러한 것들 덕분에 Maven 보다 훨씬 빠르게 동작한다.

 

 

 

Gradle | Gradle vs Maven Comparison

High-level performance and feature comparison between Gradle and Maven

gradle.org

 

이렇게 Gradle 자체에서 Maven과의 비교자료를 시각화해서 보여주기까지 하니 말이다.

 

Gradle은 JVM위에서 동작한다. 이 덕분에 Java 와의 합이 아주 훌륭하다. 

 

Gradle은 Maven을 본떠서 일반 프로젝트를 쉽게 만들 수 있도록 규칙이 구현되어 있다.

 

이 덕분에 적절한 플러그인을 적용하면 많은 프로젝트에 대해 슬림 빌드 스크립트를 쉽게 작성할 수 있게 된다.

 

Gradle을 사용하면 이러한 규칙을 재정의 하고, 고유한 작업을 추가하고, 다른 많은 사용자 지정을 할 수 있다.

 

 

또한 Android Studio, Intellij, Ecplise 등 다양한 IDE를 지원하고 있기 때문에, 빌드에 용이하다.

 

 

 

 

🧐Gradle vs Maven!


위에 있는 페이지를 보면 알 수 있겠지만, Gradle은 Maven에 비해 압도적인 성능을 제공한다.

 

 

또한 Gralde은 Maven에 비해서 확장성이 좋은데, JVM 기반의 언어에서 사용가능 할 뿐만 아니라,

 

C/C++빌드에서도 사용이 가능하다.

 

 

그 외에도 

 

종속성 관리, 사용자 경험 등 여러가지 측면에서 다양한 편의 기능을 제공합니다.

 

 

 

 

 

 

 

 

 

 

반응형