Gradle

Gradle에 대해서

Chris.Ko 2023. 1. 17. 09:12

 

Gradle 은 Grrovy를 기반으로 한 Buile 자동화 도구이다. 

Ant와 Maven과 같은 이전 세대 빌드 도구의 단점을 보완하고 장점을 취합하여 만든 오픈소스 Build 도구

 

Gradle 특징

  • Gradle은 Ant와 Maven의 장점을 모아서 만들었다. 의존성 관리를 위한 다양한 방법을 제공하고 Build Script를 XML언어가 아닌, JVM에서 동작하는 Sciprt 언어 DSL(Domain Specific Language)를 사용한다.
  • 그루비(Groovy)는 자바 문법과 유사해 자바 개발자가 쉽게 익힐 수 있는 장점이 있고, Gradle Wrapper를 이용하면 Gradle이 설치되지 않은 시스템에서도 프로젝트를 Build 할 수 있다.
  • Maven과 같은 구조화된 Build Framework (구조의 전환이 가능)
  • Multi Project Build 지원
  • 의존성 관리의 다양한 방법 제공
  • Build를 구성하기 위한 풍부한 도메인 모델 제공

Build 3단계 (Gradle Build Lifecycle)

  •  
  •  
  • 초기화 : 단일/멀티 프로젝트 빌드 지원. 초기화 단계에서는 어느 프로젝트를 빌드하는지 결정하고 각각에 대해 project 객체를 생성한다. settings.gradle 파일에서 프로젝트 구성 설정한다.(싱글프로젝트의 경우 생략 가능)
  • 구성 : 빌드에 속하는 모든 프로젝트의 빌드 스크립트를 실행한다. 이를 통해 프로젝트 객체를 구성한다.
  • 실행 : 구성 단계에서 생성하고 설정된 태스크 중에 실행할 것을 결정한다. 이때gradle 명령행에 인자로 지정한 태스크 이름과 현재 디렉터리를 기반으로 태스크를 결정하여 선택된 것들(Task)을 실행한다.

plugin설정

plugin은 미리 구성해 놓은 task들의 그룹이며, 특정 빌드과정에 필요한 기본정보를 포함하고, 필요에 따라 정보를 수정하여 목적에 맞게 사용할 수 있다.

 

저장소 설정

Gradle은 Maven repository 등 다양한 저장소를 지원한다.

 

의존관계 설정

Gradle은 java의 의존성 관리를 위해 다양한 '구성'을 제공해 준다.

  • implementation : 프로젝트 컴파일 과정에서 필요한 라이브러리
  • providedCompile : compile시에는 필요하지만, 배포 시에는 제외될 dependency를 설정한다. (war plugin이 설정된 경우에만 사용 가능하다.)
  • providedRuntime : runtime시에만 필요하고, 실행환경에서 제공되는 dependency를 설정한다. (war plugin이 설정된 경우에만 사용 가능하다.)
  • testImplementation : test시에 필요한 dependency 관리

의존관계는 group, name, version 순으로 의존성을 기술한다.