Gradle을 Ant
, Maven
이 가진 단점을 보완하고 장점을 합쳐서 만든 오픈소스 Build툴이다.
이번에 공부하면서 Gradle을 처음 사용해봤기 때문에 어떤 특징을 가지고 있는지 간략하게 알아봤다.
나처럼 처음 Gradle을 사용해보는 사람이라면 아래 특징을 슥 읽고 넘어가도 좋을 것 같다.
더 자세히 알아보고 싶다면 Gradle Github을 참고하면 된다.
Groovy
기반의 DSL(Domain Specific Language
를 사용한다. (Groovy는 Java와 문법이 유사하다)Gradle Wrapper
를 이용하면 Gradle을 설치하지 않고도 프로젝트 빌드가 가능하다.인텔리제이에서 Gradle프로젝트를 생성하면 build.gradle
이라는 파일이 생성된다.
파일의 내용을 수정하여 기존 Gradle프로젝트를 SpringBoot프로젝트로 변경한다.
처음에 생성되는 파일 내용은 여기서 다루지는 않는다.
가장먼저 작성하는 내용은 buildscript
이다.
안에 내용을 하나씩 살펴보자.
<properties></properties>
안에 선언되는 변수와 매핑되는 개념이다.mavenCentral
은 익숙하지만 jcenter
는 낯설 수 있다. 이 부분은 뒤에서 더 설명한다.문자 그대로 적용할 plugin
들을 나열한 것이다.
위 4개의 플러그인은 자바와 스프링 부트를 사용하기 위해서는 필수 플러그인이기 때문에 항상 추가해야 한다.
특히 io.spring.dependency-management
는 스프링 부트의 의존성들을 관리해주기 때문에 가장 중요하다.
Maven과 동일하게 사용하고 싶은 라이브러리 의존성을 추가하는 영역이다.
스프링 부트를 사용해보지 않았다면 버전이 명시되어 있지않은것이 이상할 수 있다.
하지만 위에서 언급했듯이 스프링 부트는 라이브러리들의 버전도 관리해준다.
라이브러리 버전관리 기준은 BuildScript의 dependencies에 선언한 spring-boot-gradle-plugin
의 버전이다.
mavenCentral에 라이브러리 업로드를 하기위해서는 매우 많은 설정과 과정이 필요하다.
이러한 문제로 개발자들이 mavenCentral에 라이브러리를 업로드 하지 않으면서 공유가 안되는 문제가 발생하였다.
이 문제를 해결한 것이 jcenter이다.
jcenter는 라이브러리 업로드 과정이 mavenCentral에 비해 단순하다.
또한 jcenter에 업로드 된 라이브러리는 mavenCentral로 업로드 될 수 있도록 자동화 되어있다.
이러한 이유로 많은 개발자들의 라이브러리가 jcenter로 이동하고 있다.
Gradle은 projects와 tasks라는 개념 등 공부해야 할 것이 많아보인다.
위 내용들을 이미 알고있다면 spring Initializr를 사용하여 곧 바로 스프링 부트 프로젝트를 생성하면 된다.