빌드 툴이란 소프트웨어 개발에 있어서 소스 코드를 실행 가능한 애플리케이션으로 만들어주는 도구입니다.
빌드 과정을 자동화하여 관리하고, 외부의 소스 코드(라이브러리)를 자동 추가 및 관리해주기도 합니다.
빌드 툴은 개발자가 스크립트를 작성하여 다양한 옵션을 주고 작업을 수행할 수 있게 합니다.
빌드: 소스코드 파일을 실행 가능한 소프트웨어 산출물로 만드는 일련의 과정
컴파일: 개발자가 작성한 소스코드를 바이너리 코드로 변환하는 과정. 빌드의 단계 중 컴파일이 포함
다양한 라이브러리들이 생겨나면서, 개발을 진행할 때 라이브러리는 하나하나 관리하는 과정이 힘들어졌습니다.
직접 다운로드하고 추가하게 되면 다운로드한 파일이 제대로 된 파일인지, 악성파일은 아닌지 확인하기도 어렵습니다.
또한 빌드 과정에서 어떤 순서로 빌드할지, 각 라이브러리들의 의존성은 어떤지를 다 찾아서 빌드를 실행시키기가 매우 어려워졌습니다.
이러한 문제점들을 해결하기 위해 빌드 툴이 나오게 되었습니다.
자바의 빌드 툴은 Ant, Maven, Gradle이 순서대로 나왔습니다. 각 빌드 툴은 이전 빌드 툴의 단점을 보완하기 위해 나왔으며, 그렇기에 현재는 Gradle을 가장 많이 사용하고 있습니다.
처음에 가장 널리 사용되던 빌드 툴입니다.
이클립스에 자동으로 탑재되어 있고, XML 스크립트를 기반으로 하고 있습니다.
하지만 이후에 나온 빌드 툴들과 달리 자동으로 라이브러리를 업데이트하는 기능이 없습니다.
Ant 이후에 나온 빌드 툴로, 자동으로 라이브러리와 그 의존성을 관리해줍니다.
XML 스크립트를 기반으로 작성하며, POM.xml 파일로 의존성을 관리합니다.
Maven에는 라이프 사이클 개념이 도입되어 빌드 순서를 정의할 수 있습니다.
가장 최근에 나온 빌드 툴로 그루비라는 문법을 사용합니다.
Build.gradle에 스크립트를 작성하며 XML 기반 스크립트에 비해 관리가 편합니다.
현재 안드로이드 프로젝트의 표준 빌드 시스템으로 채택되어 있기도 합니다.
Ant -> Maven -> Gradle 순서대로 이전 것의 단점을 보완하기 위해 나왔기 때문에 Gradle이 가장 좋은 성능을 가지고 있는 것은 맞습니다.
하지만 아직까지 Gradle을 사용하기 위해 새로 학습해야한다는 단점과 지금까지 Maven으로 작성된 프로젝트들이 상당히 많다는 점 때문에 현재까지도 Maven의 사용률이 높다고 합니다.