스프링 프로젝트를 시작하면 이러한 화면으로 시작한다.
지금까지 스프링 프로젝트를 생성하면서 항상 이 화면을 거쳤는데, Gradle 과 Maven이 무슨 차이인지도 모르고 그냥 당연히 Gradle을 선택하고 있다는 사실을 인지했다. 그리고 이런것들 하나하나에 의문을 가지는 것부터 시작해야 좋은 개발자가 될 수 있다고 생각했다.
일단 Gradle과 Maven은 자바의 빌드 도구이다.
빌드 도구란 소스 코드를 컴파일 ,테스트, 정적 분석 등을 실시하여 실행 가능한 애플리케이션으로 자동 생성하는 프로그램이다. 빌드도구는 계속해서 늘어나는 라이브러리를 자동으로 추가하고 관리한다. 또한, 라이브러리 버전을 자동으로 동기화 한다.
Maven의 특징
Gradle의 특징
설정 주입 방식을 사용한다.
오픈소스 기반의 빌드 자동화 시스템으로 Groovy 기반 DSL로 작성한다.
*Groovy(JVM에서 실행되는 스크립트 언어)
Maven의 pom.xml과 비슷하게 build.gradle 파일에서 플러그인, 의존성 추가를 한다. pom.xml보다 훨씬 간결하고 작성하기 쉬운 장점을 가지고 있다.
Gradle LifeCycle
Gradle의 장점
이렇게 Maven과 Gradle에 대해 알아보았다. 지금까지 build.gradle 파일을 작성 하면서도 아무 생각 없이 필요한 라이브러리, 의존성만 적었던 것 같다. 이렇게 파일로 정리해서 라이브러리를 관리하면 다른사람에게 프로젝트를 넘겨야 할 때도 일일히 라이브러리를 설치하는 것이 아닌, 파일을 통해 자동으로 설치할 수 있다는 장점이 있다.
결국은 여러 빌드 도구들의 장점한 모아놓은 것이 Gradle이라고 할 수 있다. Gradle의 단점이라고 하면 기존 Maven을 사용하던 개발자들은 xml이 익숙한데, groovy문법을 사용해야 한다는 점 밖에 없다. 사실상 Gradle을 사용하는 것이 가장 좋은 방법이다.