원하는 것은 뭐든지

ant? maven? gradle? 본문

개발/SPRING

ant? maven? gradle?

댕로그😏 2023. 3. 8. 23:00
반응형

시작

Spring을 알고 꽤 지나 Maven, Gradle가 빌드 관리 도구라는 것은 알고 있지만 무슨 차이가 있는지는 잘 모른다. 

문득 궁금해지고 알아둬야 할 것 같아 정리 해 본다.

 

빌드 도구

빌드는 작성한 소스코드를 실행할 수 있는 파일로 만드는 것을 말한다.

빌드도구는 빌드과정을 자동으로 처리해 주고 너무 많아져서 일일이 다 관리해 주기 힘든 라이브러리를 추가, 관리해주는 도구를 말한다.

 

Ant

2000년에 발표 되었고 자바로 개발된 자바프로젝트의 빌드 도구이다.

자바뿐 아니라 C, C++ 어플리케이션 개발에도 사용될 수 있다.

다른 툴과의 연동이 쉽다, 이를 통해 빌드 프로세스를 확장 할 수 있다.

 

Maven

  • pom.xml(Project Object Model)에 파일에 설정을 작성하여 빌드 프로세스를 정의한다.
  • 라이브러리 의존성을 관리하기 위한 표준적인 방법을 제시한다, 이를 통해 프로젝트에서 사용하는 라이브러리를 쉽게 관리할 수 있다.
  • 생명주기를 정의하고 각 단계에서 필요한 작업을 수행하는 플러그인을 실행한다. 이를 통해 빌드 프로세스를 자동화할 수 있다.

메이븐의 목표는 다음과 같다.

  • 빌드 프로세스를 쉽게
  • 균일한 빌드시스템 제공
  • 질 좋은 프로젝트 정보 제공
  • 더 나은 개발 관행을 장려

 

Gradle

  • 가장 최근에 나온 빌드 도구이고 위의 두 개와 달리 xml을 사용하지 않고 Groovy언어를 사용하여 빌드 스크립트를 작성한다. xml보다 유연하게 정의할 수 있다.
  • 빌드 작업을 병렬로 수행할 수 있다. 이를 통해 빌드 시간을 단축할 수 있다.
  • 변경된 소스만 컴파일하여 빌드하는 인크리멘탈 빌드기능을 제공한다. 
  • 안드로이드 스튜디오의 공식 빌드 시스템

 

maven과 gradle이 가장 많이 사용하는 빌드 도구일 텐데 요즘은 대부분 gradle을 사용한다.(우리 회사는 Maven..)

비교를 gradle만 제공하고 있는데 자신감이 돋보이는 부분이다.

 

Maven vs Gradle

빌드 스크립트

  • Maven은 XML 기반의 설정 파일(pom.xml)을 사용하며, 이 파일에 프로젝트의 구조와 빌드 프로세스를 정의합니다.
  • Gradle은 Groovy나 Kotlin과 같은 스크립트 언어를 사용하여 빌드 스크립트를 작성합니다. 이를 통해 빌드 프로세스를 더욱 유연하게 구성할 수 있습니다.

의존성 관리

  • Maven은 중앙 저장소(Central Repository)에서 라이브러리를 다운로드하며, 이를 로컬 저장소(Local Repository)에 저장합니다. 이를 통해 프로젝트의 라이브러리 의존성을 관리할 수 있습니다.
  • Gradle은 Maven과 동일한 중앙 저장소를 사용하지만, 필요한 라이브러리를 더욱 효율적으로 다운로드합니다. 이를 통해 더 빠른 빌드 속도를 제공합니다.

성능

  • Maven은 빌드 속도가 느리다는 단점이 있습니다. 이는 Maven이 빌드를 실행할 때 매번 빌드 과정을 초기화하기 때문입니다.
  • Gradle은 캐시를 사용하여 이전에 빌드한 결과를 저장합니다. 이를 통해 빌드 속도가 더욱 빠릅니다.

커스터마이징

  • Maven은 빌드 과정을 더욱 일반화한 구조를 가지고 있어, 개발자들이 빌드 프로세스를 구성하기 쉽습니다. 하지만 이로 인해 커스터마이징이 어려울 수 있습니다.
  • Gradle은 스크립트 언어를 사용하기 때문에, 더욱 자유로운 빌드 프로세스 구성이 가능합니다.

틀린 부분이 있다면 지적 부탁드립니다.

 

감사합니다.

반응형
Comments