프로그래밍 공부/Gradle

Gradle이란? , Gradle 설치, Gradle 과 Maven

Wonuk 2021. 8. 31. 21:24
반응형

 

Gradle의 모든 포스팅은 유튜브 프리렉을 기반으로 작성되었습니다.




링크 : https://www.youtube.com/watch?v=s-XZ5B15ZJ0&list=PL7mmuO705dG2pdxCYCCJeAgOeuQN1seZz

강의의 버전이 옛버전 이기 때문에 이론적인 부분만 학습하는것이 좋습니다.


 

Gradle

build를 수행하기 위한 build 시스템 또는  빌드 도구로서 현재 많이 사용되고 있는

ant나 maven과 같은 도구이다.

 

 

 

Gradle 이란?

  • 빌드도구, 빌드 시스템, 빌드 툴과 같은 빌드를 수행할 수 있도록하는 언어중에 하나이다. 
  • 그루비(Groovy)기반 - Java와 유사한 문법 구조로 학습에 용이하다
  • 다양한 기능을 제공한다
  • DSL(Domain Specific Language) 제공

Gradle은 2007년에 출시 되었는데 짧은 역사에도 불구하고 유연함과 강력한 기능제공으로 인해서 

2013년도에는 Google에서 안드로이드 애플리케이션 개발에 사용되는 공식 빌드도구로서 채택되었다.

 

그루비(Groovy)기반이기 때문에 Gradle은 스크립트 기반을 가지고 있고,

Maven보다 배우기 쉽고 유지 및 관리가 쉽다는 장점이 있다.

또한 JAVA를 학습한 사람이라면 Groovy가 JAVA와 유사한 문법구조를 가지고 있기 때문에

이를 기반으로한 Gradle은 학습 및 활용이 용이하다.

 

Gradle은 Ant나 Maven으로 구성된 빌드 시스템을 Gradle로 손쉽게 변환해서 사용 할 수 있는 방법을 제공하고

있으며, JAVA이외에도 다양한 언어에서도 빌드가 가능하도록 기능지원하고 있다.

 

Gradle은 오픈소스 기반으로 새로운 기능들이 계속 추가 및 보완되고 있으며, 이렇게 추가 및 보완된 부분들은

DSL(Domain Specific Language)을 통해서 제공되고 있고 이를 통해서 쉽게 활용할 수 있고 참고가 가능하다.

 

그래서 Gradle을 잘 활용하기 위해서는 DSL을 잘 활용해야한다.

 

 

DSL 활용법

DSL 주소 : https://docs.gradle.org/current/dsl/

 

Gradle DSL Version 7.2

A build script is made up of zero or more statements and script blocks. Statements can include method calls, property assignments, and local variable definitions. A script block is a method call which takes a closure as a parameter. The closure is treated

docs.gradle.org

 

 

 

Gradle을 이용해서 build시스템을 구축하거나 관련된 기능들을 추가해야할 필요가 있을 때

DSL을 참고하게 된다면 DSL에서 제공하는 기능을 그대로 스크립트 부분을 가져가 사용할 수 있다.

 

상단의 링크를 클릭하면 DSL Reference 부분을 참고 가능하며, 좌측의 메뉴들로 객체를 확인할 수 있다.

 

DSL을 사용함에 있어서 Gradle에서는 크게 네가지 상태로 기능을 나누어 분류하고 있다.

- 비공개(Internal), 실험상태(Incubating), 공개상태(public), 폐지상태(Deprecated) 등

 

  • 비공개 상태(Internal) : 말 그대로 비공개 상태로서 DSL이나 API로 제공 및 공개하지 않는 상태
  • 실험상태(Incubating) : 기능이 추가는 되어있으나 개선 및 변경의 여지가 있는 상태 
  • 공개상태(public) : 기능이 검증되어서 활용하면 되는 상태
  • 폐지상태(Deprecated) : Gradle의 버전이 업그레이드 되면서 없어질 예정이거나 새로운 기능이 추가됨으로                                          더이상 필요하지 않은 상태 

폐지상태로 있어도 사용은 가능하나,  언제 사라질지 모르기 때문에 사용하는것을 지양하는것이 좋다.

 

 

 

DSL 활용시 주의점

 

DSL 링크에 들어가 Project 객체를 들어가보면 하단에 속성(Properties) 및 관련 기능들을 볼 수 있다.

속성들을 보면 설명란에 incubating 이 적힌 속성들을 볼 수 있는데 이것이 실험상태 이다.

또한, deprecated가 적힌것은 폐지상태이므로 사용하는데 있어서 유념해야 한다.아무것도 붙어있지 않은 경우는 모두 공개상태(public)이다. 공개상태의 속성들은 언제든지 사용가능하다.

 

 


 

그레이들 설치

Gradle을 원활하게 설치하고 실습하는데 있어서 실습환경을 먼저 확인해야 한다. JDK 버전, Gradle 버전 확인지원되는 운영체제 확인

 

 

Gradle 공식 홈페이지 : https://gradle.org/

 

Gradle Build Tool

Accelerate developer productivity. Gradle helps teams build, automate and deliver better software, faster.

gradle.org

 

 

 

1. 홈페이지로 들어가 Install Gradle을 클릭한다.

 

공식홈페이지 메인화면

홈페이지에서는 다운로드 뿐만이 아닌, Gradle을 시작할 수 있는 가이드, 관련된 각종 예제들을 참조할 수 있다.

 

2. 페이지 하단의 Installing manually의 step1 Download를 클릭한다

step1 Download

 

3. 다운받고자 하는 버전을 선택하여 다운로드 한다.

complete를 클릭하면 zip파일 형식으로 다운로드 됨

 

 

4. 다운로드가 완료되면 압축을 푼 후 C드라이브에 Gradle이라는 폴더를 만들어

압축이 풀린 폴더를 넣는다.

 

5. Gradle의 환경변수를 설정해야한다.

 

windows10 기준

제어판 - > 시스템 - > 고급시스템 설정

or

윈도우 검색창에 시스템 환경 변수 편집 클릭 후 고급 탭 클릭

 

하단의 환경 변수 클릭

 

 

 

환경변수를 눌러 하단의 시스템 변수 새로만들기 클릭하여 추가

 

path에도 설정해준다 (bin 디렉토리 까지 포함)

%GRADLE_HOME%\bin 추가

 

 

6. Gradle이 잘 설치되어있는지 확인한다.

cmd창 실행 Gradle -version 타이핑 후 엔터

해당 화면이 잘 출력되면

설치 완료

 

여기까지 준비되면 Gradle을 실습하기 위한 모든 준비가 완료된 상태입니다.

 

 


Gradle VS Maven

그레이들과 메이븐 성능비교

https://gradle.org/maven-vs-gradle/

 

Gradle | Gradle vs Maven Comparison

High-level performance and feature comparison between Gradle and Maven

gradle.org

https://gradle.org/gradle-vs-maven-performance/

 

Gradle | Gradle vs Maven: Performance Comparison

Gradle is up to 100 times faster than Maven. Take a look at case studies and find out more about the performance advantages of Gradle over Maven.

gradle.org

 

Maven이란?

apache에서 Ant의 대안으로 XML기반으로 한 빌드도구

Gradle과 마찬가지로 빌드, 문서화, 리프팅, 의존관계 관리, 소스코드 관리, 릴리즈 및 배포와 관련된 기능들을 수행한다.

 

 

Gradle과 Maven의 가장 큰 차이점

Gradle은 Groovy를 바탕으로한 스크립트 기반이지만 Maven은 XML기반이다.

 

Maven의 단점

배우기가 어렵다,

또한 XML 기반이기 때문에 프로젝트의 규모가 커지면 빌드를 위한 XML에 작성한 코드들이 복잡하여 관리가 어렵다.

이로인해 성능등에 대한 이슈가 생길 수 있다.

 

 

이런 부분들의 단점을 극복하기 위해 Gradle이 출시되었다.

 

 

Gradle과 Maven의 비교 : 상단의 공식홈페이지 링크 참조

빌드수행에 관련된 성능적인 차이점이 존재한다.

 

비교항목 : 유연성, 성능, 속도, 사용자경험, 의존관계 관리

 

Performance를 확인해보면 동일한 환경에서 성능관련 테스트결과가 나와있다

그곳에는 우수한 특징 3가지가 적혀있는데

 

1. Incrementality 향상성, 증분적인 부분?

2. Build Cache 를 사용하는 부분

3. Gradle Daemon 이 존재하는 부분

 

Incrementality은 빌드를 수행함에 있어서 처음부터 끝까지 계속적으로 빌드를 수행하는 것이 아니라 변경된 부분만을 찾아서 빌드를 수행함으로써 성능적인 부분을 향상시킨것.

 

 Build Cache, Gradle Daemon을 사용하는 부분은 빌드 정보에 대해서 메모리에서 계속적으로 유지하고 관리하고 있는 부분에서 성능적으로 Maven보다 향상되었다.

 

Gradle은 Maven보다 2배이상 빨라졌고, Build Cache를 사용한 부분은 100배이상 빨라졌다는걸 알 수 있다. 

 

 

사용자 경험

 

사용자가 습득하기 더 편한 부분들을 나타낸다.

 

 

성능 테스트들을 한 모든 시나리오에서 모든 부분에서 Gradle이 Maven보다 월등히 우수함을 보여준다.

 

Maven이나 Ant를 이용하여 만든 프로젝트도 Gradle로 변환할 수 있는 기능이 제공된다.

반응형