그레이들과 메이븐 중 어느 것을 선택하든 스프링 부트 빌드 플러그인은 빌드를 도와준다. 앞에서 그레이들의 bootRun 태스크로 애플리케이션을 시작하는 방법을 살펴보았다. 이와 비슷하게 스프링 부트 메이븐 플러그인은 메이븐으로 애플리케이션을 실행하는 spring-boot:run 골을 제공한다.
빌드 플러그인의 주 기능은 프로젝트를 실행 가능한 우버 JAR로 패키징하는 것이다. 우버 JAR 패키징 작업으로 애플리케이션 의존성을 모두 JAR에 패키징하고, java -jar 명령으로 애플리케이션을 실행할 수 있게 하는 엔트리를 담은 매니페스트(Manifest)를 추가한다.
코드 2-4에 나타낸 메이븐 빌드에는 빌드 플러그인 지정 외에 spring-boot-starter-parent를 부모로 지정하는 코드도 있다는 점을 눈여겨보자.
프로젝트에 부모 스타터를 지정하면 메이븐의 의존성 관리 기능으로 자주 사용하는 라이브러리들의 의존성 버전을 상속받을 수 있어서 의존성을 선언할 때 버전을 명시하지 않아도 된다. 이 pom.xml에 있는 모든 <dependency> 엔트리에 버전을 명시하지 않는다는 점을 주목하자.
안타깝게도 그레이들에는 메이븐이 제공하는 이런 의존성 관리 기능이 없다. 그래서 스프링 부트 그레이들 플러그인은 세 번째 기능을 제공한다. 이 기능은 자주 사용하는 여러 스프링과 스프링 관련 의존성을 고려하여 메이븐의 의존성 관리를 흉내 낸다. 결과적으로 코드 2-3의 build.gradle 파일 역시 어떤 의존성에도 버전을 지정하지 않고 있다.
이제 어떤 의존성을 포함했는지 살펴보자. 각 빌드 명세에 의존성 다섯 개를 선언했다. H2 의존성을 제외한 모든 의존성의 아티팩트 ID가 신기하게도 spring-boot-starter-로 시작한다. 이들은 스프링 부트 스타터 의존성이며, 스프링 부트 애플리케이션에 빌드 마법을 제공한다. 그럼 스타터 의존성이 제공하는 장점을 살펴보자.