[Springboot] Maven vs Gradle

박정현·2023년 9월 27일
0
post-thumbnail

spring initialeizr에서 프로젝트를 설정할 때 maven과 gradle이 있었다. 이번에 maven과 gradle이 무엇인지 알아보자.

1. 빌드(Build)

(1) 빌드(Build)란?

  • Maven과 Gradle은 모두 빌드도구. 이를 이해하기 위해서는 먼저 빌드에 대해 알아야함
  • 빌드는 소스코드 파일을 컴퓨터에서 실행할 수 있는 독립 소프트웨어 가공물로 변환하는 과정 또는 그에 대한 결과물을 의미함
  • 즉, 우리가 작성한 소스코드(java), 프로젝트에서 쓰인 각각의 파일 및 자원 등(.xml, .jpg, jar, .properties)을 WAS가 인식할 수 있는 구조로 패키징하는 과정 및 결과물을 의미함

(2) 빌드 도구(Build tool)란?

  • 빌드 도구란 프로젝트 생성, 테스트 빌드, 배포 등의 작업을 위한 전용 프로그램을 의미함
  • 빠른 기간 동안 계속해서 늘어나는 라이브러리의 추가, 프로젝트를 진행하며 라이브러리의 버전 동기화의 어려움 등을 해소하기 위해 등장함
  • 즉, 빌드 자동화 도구
  • Ant, Maven, Gradle이 여기에 해당

2. Maven

(1) Maven이란?

  • 메이븐(Maven)은 자바용 프로젝트 관리 도구로 Apache Ant의 대안으로 만들어짐
    • Apache Ant 역시 Java기반의 빌드도구로 다른 빌드 도구보다 오래되었음
    • Ant는 개발자가 원하는 것을 개발할 수 있다는 유연성이라는 큰 장점이 있지만 프로젝트가 복잡해질 경우에는 각각의 Biuld과정을 이애하기 어렵다는 단점이 있음
  • Maven은 프로젝트에 필요한 모든 Dependency를 리스트의 형식으로 Maven에게 알려 관리할 수 있도록 돕는 방식
  • 즉, 프로젝트를 진행하면서 사용하는 수많은 라이브러리들을 관리해주는 도구임

(2) Maven 장단점

① 장점

  • 여기서 그 라이브들과 연관된 라이브러리들까지 거미줄처럼 모두 연동되어 관리되어 같이 업데이트 되는 장점이 있음
  • Ant와 달리 XML, remote repository를 가져올 수 있어 jar, class path를 다운로드 없이 선언만으로 사용이 가능함

② 단점

  • 라이브러리가 서로 종속될 경우 XML이 복잡함
  • 계층적인 데이터를 표현하긴 좋지만 플로우나 조건부 상황을 표현하기에는 어려움
  • 편리하나 맞춤화된 로직 실행 어려움

3. Gradle

(1) Gradle이란?

  • 빌드도구로 프로젝트 구성 및 관리, 테스트, 배포 등을 관리함
  • 안드로이드 앱의 공식 빌드 시스템임
  • JAVA, C/C++M Python 등을 지원함
  • 빌트툴인 Ant Builder와 Groovy 스크립트 기반으로 만들어져 기존 Ant의 역할과 배포 스크립트의 기능을 모두 사용 가능함
  • 자바 프로젝트에서 외부 라이브러리를 가져다 쓴다는 것은 외부 라이브러리의 jar를 가져와서 classpath에 추가하는 것
  • buiild.gradle이라는 파일에 가져다 쓸 라이브러리의 이름, 버전을 명시하면 gradle이 알아서 jar파일을 다운 받고 추가해줌
  • gradle은 오픈소스 빌드 자동화 툴

(2) Gradle 장단점

① 장점

  • 설정주입방식구조로 Maven의 상속구조 보다 재사용 용이
  • 빌드 속도가 Maven에 비해 10~100배 가량 빠름
  • Groovy 언어를 이용해서 코드로서의 설정정보를 구성하여 구조적이고 가독성이 좋음

② 단점

  • Maven이 익숙함
  • +딱히 없다…

4. Maven vs Gradle

  • Maven과 Gradle의 장단점을 보면 알 수 있듯이 현재는 Gradle이 더 많이 쓰임


📚 Reference

MISTERY, https://sugerent.tistory.com/571 를 보고 정리한 글입니다.

갓대희's 작은공간 ,https://goddaehee.tistory.com/199 를 참고하여 작성하였습니다.

profile
개발을 개발괴발하지 않기 위한 노력

0개의 댓글