빌드 도구 feat. ( Gradle , Maven )

최동근·2022년 12월 14일
0

스프링부트

목록 보기
4/13

스프링부트를 진행함에 있어 필수적으로 이해해야 하는 빌드 도구에 대표격인 Gradle 과 Maven에 대해 알아봅시다!🚀

💡 빌드 도구(Build Tool) 란?

빌드도구는 소스코드에서 어플리케이션 생성을 자동화 하기 위한 프로그램이다. 빌드는 코드를 사용 or 실행 가능한 형태로 컴파일링, 링킹, 패키징 하는것을 포함한다.

해당 글은 빌드 도구에 대한 정의입니다.🤔
쉽게 얘기하자면 스프링 애플리케이션 실행 버튼을 눌렀을때 실행되는 전반적인 빌드 과정을 관리하는 도구(프로그램)입니다.
자바 진영의 프로젝트의 수준이 발전함에 따라 빌드 도구도 함께 발전해 왔는데요. 어떤 빌드 도구가 있을까요?

1) 앤트(Ant)
자바 프로젝트 빌드 도구로 가장 널리 사용되던 것이 앤트였습니다. 이클립스라는 IDE에 기본적으로 탑재되었으며, XML 스크립트를 기반으로 한 빌드 도구입니다.
아쉽게도 라이브러리를 자동적으로 업데이트 하는 기능이 없기에 레거시 시스템에서만 사용되고 있습니다.


2) 메이븐(Maven) ⏰ Since 2004
앤트 이후에 나온 자바 빌드 도구입니다. 그 당시에 굉장히 혁신적인 빌드 도구였습니다. 왜 그랬을까요?
바로 앤트로는 불가능했던 라이브러리와 의존성(dependency) 를 관리하는 기능을 가능하게 했기 때문입니다.
앤트와 마찬가지로 XML 스크립트를 기반으로 하며, pom.xml(project object model) 파일로 의존성을 관리합니다.
메이븐도 시간이 지나면서 업데이트 되면서 라이프 사이클(Life Cycle) 개념이 도입되어 빌드 순서등을 정의할 수 있습니다.
가장 많은 개발자들이 사용해 오는 빌드 도구라고 할 수 있습니다. 그렇기에 다양한 레퍼런스가 존재합니다.


3) 그레이들(Gradle) ⏰ Since 2012
가장 최근에 나온 자바 빌드 도구로써, '그루비(Groovy)' 문법을 사용합니다.
Build.gradle에 스크립트를 작성하며, 대규모 프로젝트에서 복잡해지는 경향이 있는 XML 기반 스크립트에 비해 관리가 편하다는 장점이 있습니다. 현재 Gradle은 안드로이드 프로젝트의 표준 빌드 시스템으로 채택되어 있습니다.


앤트는 레거시 프로젝트에만 사용될 뿐, 비교적 최근의 프로젝트에서는 거의 사용되지 않습니다.
따라서 저희는 메이븐과 그레이들에 대해 좀 더 살펴보겠습니다.
현재 저희 앞에 놓인 선택지는 2가지 입니다. 무엇을 선택할까요? 🤔

💡 Gradle VS Maven (그레이들이냐, 메이븐이냐 그것이 문제로다)


해당 이미지는 스프링 프로젝트를 만들 때 기본적인 세팅을 하는 창입니다.
타입이라고 쓰여지는 행에 보시면 Gradle 과 Maven 을 선택하는 부분이 존재하는 것을 확인 할 수 있습니다.

Maven 의 장점

  1. 다양한 관련 Reference
    • 스프링 부트 프로젝트 관련 검색 필요시 Maven 빌드 관련 프로젝트가 압도적으로 많다.
  2. 수많은 사용자 경험
    • Maven이 더 오래 되었기 때문에 다양한 사용자 경험이 존재한다.
  3. 개발 가이드 라인 제공
    • 정형화된 가이드 라인이 잘 정리 되어 있다.

Gradle의 장점

  1. 간결한 스크립트
    • 프로젝트의 규모가 커질 수록 XML 파일의 복잡도는 매우 복잡해지는데, 이에 반해 간결한 스크립트로 실행된다.
  2. 빌드 속도
    • Gradle은 caching을 하기 때문에 Ant나 Maven 같은 이전 빌드 도구보다 빌드 속도가 빠르다.
    • 빌드 캐시를 사용하는 경우 최대 100배까지 벌어 질 수 있다.
  3. 멀티 프로젝트 빌드
    • 대규모 자바 프로젝트는 대부분 다중 모듈로 구성된다.
    • Gradle의 멀티 프로젝트 빌드 기능을 이용하면 번거로움과 실수를 줄일 수 있다.
    • 필요에 따라 개별적으로 설정할 수 있어 스크립트의 작성량이 메이븐보다 적다.
  4. Wrapper
    • 초기 프로젝트 세팅 시 Gradle Wrapper 사용을 권장한다.
      특정 버전의 Java나 Gradle을 설치할 필요없이 바로 프로젝트를 실행할 수 있다.

저의 선택 👍

제가 처음에 스프링을 접했을 때는 비교적 레퍼런스가 많았던 Maven을 사용해서 프로젝트를 진행했습니다.
예를 들어, 생소한 외부 라이브러리를 사용해야 하는 경우가 있었는데, Gradle 관련 레퍼런스는 존재하지 않았지만 Maven 관련 레퍼런스는 정리가 잘 되있어 해당 블로그를 보고 외부 라이브러를 추가해서 프로젝트를 진행했던 기억이 있습니다.
하지만 현재는 Gradle을 사용하고 있습니다. Maven 에 비해 장점이 많고 또 현재 트렌드로 자리매김하고 있는 빌드 도구이기에, 다양한 레퍼런스의 수가 증가하고 있습니다. 🛠️

  • 자신이 스프링을 막 시작했다? -> Maven (물론 Gradle 도 좋은 선택)
  • 스프링이 익숙하다. -> Gradle

참고

Build Tool
Gradle Doc

profile
비즈니스가치를추구하는개발자

0개의 댓글