스프링부트를 진행함에 있어 필수적으로 이해해야 하는 빌드 도구에 대표격인 Gradle 과 Maven에 대해 알아봅시다!🚀
빌드도구는 소스코드에서 어플리케이션 생성을 자동화 하기 위한 프로그램이다. 빌드는 코드를 사용 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 과 Maven 을 선택하는 부분이 존재하는 것을 확인 할 수 있습니다.
제가 처음에 스프링을 접했을 때는 비교적 레퍼런스가 많았던 Maven을 사용해서 프로젝트를 진행했습니다.
예를 들어, 생소한 외부 라이브러리를 사용해야 하는 경우가 있었는데, Gradle 관련 레퍼런스는 존재하지 않았지만 Maven 관련 레퍼런스는 정리가 잘 되있어 해당 블로그를 보고 외부 라이브러를 추가해서 프로젝트를 진행했던 기억이 있습니다.
하지만 현재는 Gradle을 사용하고 있습니다. Maven 에 비해 장점이 많고 또 현재 트렌드로 자리매김하고 있는 빌드 도구이기에, 다양한 레퍼런스의 수가 증가하고 있습니다. 🛠️