Gradle? Maven?

권 해·2023년 1월 3일
0

Spring

목록 보기
1/9

스프링 프로젝트를 시작하면 이러한 화면으로 시작한다.

지금까지 스프링 프로젝트를 생성하면서 항상 이 화면을 거쳤는데, Gradle 과 Maven이 무슨 차이인지도 모르고 그냥 당연히 Gradle을 선택하고 있다는 사실을 인지했다. 그리고 이런것들 하나하나에 의문을 가지는 것부터 시작해야 좋은 개발자가 될 수 있다고 생각했다.

일단 Gradle과 Maven은 자바의 빌드 도구이다.
빌드 도구란 소스 코드를 컴파일 ,테스트, 정적 분석 등을 실시하여 실행 가능한 애플리케이션으로 자동 생성하는 프로그램이다. 빌드도구는 계속해서 늘어나는 라이브러리를 자동으로 추가하고 관리한다. 또한, 라이브러리 버전을 자동으로 동기화 한다.

Maven

Maven의 특징

  • pom.xml 파일을 통해 프로젝트를 빌드한다.
  • 빌드 절차를 간소화하여 쉽게 만들 수 있다.
  • 정형화된 빌드 시스템을 제공한다.
    -> 필요한 라이브러리를 pom.xml에 정의해 놓으면 네트워크를 통해서 라이브러리들을 자동으로 다운 받아 준다.
    Maven의 단점
  • 특정 플러그인이 설정이 다를 때 해당 설정이 분리해서 중복 기술할 때가 있다. 이때 불필요하게 설정이 길어지고 중복, 가독성 저하가 발생하여 유지 보수성이 떨어진다.
    *플러그인: 사람들이 자주 사용할만한 기능들을 직접 일일이 구현할 필요 없이 필요한 기능들만 그때 그때 찾아서 사용할 수 있도록 미리 만들어 놓은 것.
    -> 이를 해결하기 위해 Gradle이 등장

Gradle

Gradle의 특징

  • 설정 주입 방식을 사용한다.

  • 오픈소스 기반의 빌드 자동화 시스템으로 Groovy 기반 DSL로 작성한다.
    *Groovy(JVM에서 실행되는 스크립트 언어)

  • Maven의 pom.xml과 비슷하게 build.gradle 파일에서 플러그인, 의존성 추가를 한다. pom.xml보다 훨씬 간결하고 작성하기 쉬운 장점을 가지고 있다.

    Gradle LifeCycle

  1. Initialization : 빌드 대상 프로젝트를 결정하고 각각에 대한 Project 객체를 생성하는 단계
  2. Configuration : 빌드 대상이 되는 모든 프로젝트의 빌드 스크립트를 실행하는 단계
  3. Execution : 구성 단계에서 생성하고 설정된 프로젝트의 태스크 중에 실행 대상 결정하는 단계

Gradle의 장점

  • Groovy 언어를 이용하여 코드로서의 설정정보를 구성하기 때문에 구조적이다.
  • 설정주입방식으로 정의하기 때문에 Maven의 상속 구조보다 재사용에 용이하다.
  • 이미 반영된 빌드의 부분은 더이상 재실행 되지 않는다. (빌드 시간 단축)

이렇게 Maven과 Gradle에 대해 알아보았다. 지금까지 build.gradle 파일을 작성 하면서도 아무 생각 없이 필요한 라이브러리, 의존성만 적었던 것 같다. 이렇게 파일로 정리해서 라이브러리를 관리하면 다른사람에게 프로젝트를 넘겨야 할 때도 일일히 라이브러리를 설치하는 것이 아닌, 파일을 통해 자동으로 설치할 수 있다는 장점이 있다.
결국은 여러 빌드 도구들의 장점한 모아놓은 것이 Gradle이라고 할 수 있다. Gradle의 단점이라고 하면 기존 Maven을 사용하던 개발자들은 xml이 익숙한데, groovy문법을 사용해야 한다는 점 밖에 없다. 사실상 Gradle을 사용하는 것이 가장 좋은 방법이다.

0개의 댓글