그래들 ( Gradle ) 에 대한 학습 - 그래들이란? / What is Gradle?

학부생 시절, 메이븐 빌드 툴을 이용해서 자바 프로젝트를 진행했던 희미한 기억이 있다. 그런데 현 직장에서 처음 맡은 프로젝트가 그래들 (gradle) 구성으로 이루어진 프로젝트. 때문에 그래들에 대한 학습을 진행하고 여기에 기록한다. gradle은 build를 쉽게 하게 해주는 도구라고 생각할 수 있으며 사전에 빌드(build)에 대한 개념을 잡고 학습한다.

 

 

컴파일,링크, 빌드, 배포 개념 정리 / what is the Compile,Link,Build,Deploy?

본인은 PHP 웹개발자 외길 인생을 살아왔다. Frame Work는 Laravel을 사용하여 개발을 진행하였고, 별도의 컴파일 , 빌드 과정 없이 실서버에 deploy(배포)만 진행하여 서비스를 개발해왔다. 최근 회사에

min-nine.tistory.com


빌드 도구는?

빌드 도구는 source code에서부터 application 실행파일까지 만드는 일련의 빌드 과정을 자동화시키는 프로그램이다. 때문에 종속성을 다운로드하고 소스코드를 바이너리 코드로 컴파일하여 패키징을 통해 테스트를 실행하는 등의 모든 빌드 행위를 자동화하게 도와준다. java 언어의 빌드 도구로는 Ant / Maven / Gradle 등이 있다.

 

그래들 ( Gradle )이란?

무언가 거창하게 설명하고 싶지만 정말 간단하였다. Gradle은 Ant , Maven의 단점들을 보안하고 장점들을 취합하여 만든, 그루비 ( Groovy )를 기반으로 만든 오픈소스로 공개된 빌드 도구. 그렇다면 Ant와 Maven이라는 빌드 도구들의 장단점을 알아야 Gradle의 사용 목적을 알 수 있지 않을까? gradle을 왜 사용하는지 알고 싶기에 Ant와 Maven 2개의 빌드 도구에 대하여 간단하게 알아보았다.

gradle 로고

 

Maven에 대한 간략한 설명 및 Ant / Maven 비교

Ant는 Maven 이전 시절에 사용한 빌드 도구로써 현재는 거의 사용하지 않기 때문에 상세히 찾아보지는 않았다. Maven 빌드 도구를 사용하여 개발하는 회사들은 현재도 많기 때문에 Maven이 무엇인지, 그리고 Ant와 Maven을 비교하여 간단한 설명글을 적는다.

 

Apache Maven에 대해서

1. 자바 프로그램에서 표준이라고 할 수 있는 빌드 도구이다.
2. 기존의 Ant라는 빌드 도구를 사용하였으나 자연스러운 흐름에 따라 Ant에서 Maven으로 전환되었다.
3. Maven의 장점은 "중앙 저장소"이다. 자바에서 사용되는 라이브러리들을 Maven은 "중앙 저장소"에 접속하여, 다운로드 후 프로젝트에 설치한다.
4. 즉, 개발자가 라이브러리 등을 직접 설치하거나 관리할 필요가 없다.   
5. Maven은 XML으로 빌드 파일을 만든다.(xml 기반으로 인하여 프로젝트에 사용할 라이브러리 등도 보기 쉽게 관리할 수 있다.)

Ant Maven
Ant에는 공식적인 규칙이 없으므로 build.xml 파일에 프로젝트 구조에 대한 정보를 제공해야 한다. Maven는 소스 코드, 컴파일 코드 등을 배치하기 위한 규약을 가지고 있다. 따라서 pom.xml 파일에 대한 프로젝트 구조에 대한 정보를 제공할 필요가 없다.
Ant는 절차 적입니다. 코드를 통해 할 일과 수행시기에 대한 정보를 제공해야 한다. 순서를 지정을 해야 한다. Maven은 선언적이며 모든 것을 pom.xml 파일에서 정의한다.
Ant에는 수명주기(life cycle)가 없기 때문에 각각의 결과물에 대한 의존관계 등을 정의해야 한다. Maven에는 수명주기(life cycle)가 있다.
도구(tool) 형태이다. 프레임워크 형태이다.
주기능은 빌드 툴(build tool)이다.. 프로젝트 관리 도구(project management tool)이다.
Ant 스크립트는 재사용 할 수 없습니다. maven 플러그인은 재사용 할 수 있다.
Maven보다는 비선호적이다. Ant보다 더 좋다.

 

그래들 ( Gradle )의 사용 목적 및 Mac OS에 Gradle 설치하기

Gradle은 Ant와 Maven의 장점들을 모아 만든 오픈소스 형태의 빌드 도구로써 의존성 관리를 위한 다양한 방법을 제공하고, 빌드 스크립트를 XML 언어가 아닌 JVM(Java Virtual Machine)에서 동작하는, 자바 문법과 유사하며 자바 개발자가 쉽게 익힐 수 있는 장점이 있는 그루비 (Groovy) 언어 기반의 DSL (Domain Specific Language)를 사용한다. 

 

또한 위에서 설명한 Maven의 pom.xml 파일을 Gradle 용도로 변환시켜 Maven의 중앙 저장소도 지원하기 때문에 Maven에서 사용했던 라이브러리를 모두 그대로 가져다 사용할 수 있으며 Gradle Wrapper라는 것을 이용하면 Gradle 빌드 도구가 설치되어있지 않은 시스템에서도 Gradle 프로젝트를 빌드할 수 있다.

 

필자는 맥북(Mac OS)을 애용하기 때문에 맥 기준으로 Gradle을 설치하였다. 설치법은 정말 간단했다. JDK 또는 JRE 버전이 8 버전 이상이어야 하는 것만 주의하고 설치한다.

$ java -version

jdk 혹은 jre 버전이 8 버전 이상인지 확인한다.

$ brew install gradle

mac os에서 brew로 gradle 설치하기