Gradle

2021. 4. 14. 12:21빌드 도구/Gradle

Gradle의 개념

Gradle이란 Groovy를 기반으로 한 빌드 도구입니다. Ant와 Maven과 같은 이전 세대 빌드 도구의 단점을 보완하고 장점을 취합하여 만든 오픈소스로 공개된 빌드 도구 입니다.

Ant

  • XML 기반으로 빌드 스크립트를 작성
  • 자유롭게 빌드 단위를 지정
  • 간단하고 사용하기 쉬움
  • 유연하지만 프로젝트가 방대해지는 경우 스크립트 관리나 빌드 과정이 복잡해짐
  • 생명주기를 갖지 않아 각각의 결과물에 대한 의존 관계등을 정의해야함

Maven

https://kchanguk.tistory.com/10?category=889165

Gradle의 특징

Gradle은 의존성 관리를 위한 다양한 방법을 제공하고 빌드 스크립트를 XML 언어가 아닌 JVM에서 동작하는 스크립트 언어 Groovy 기반의 DSL을 사용합니다. Groovy는 자바 문법과 유사하여 자바 개발자가 쉽게 익힐 수 있다는 장점이 있으며 Gradle Wrapper를 이용하면 Gradle이 설치되지 않은 시스템에서도 프로젝트를 빌드할 수 있습니다. 심지어 Maven의 pom.xml을 Gradle용으로 변환할 수 있으며 Maven의 중앙 저장소도 지원하기 때문에 라이브러리를 그대로 가져다 사용할 수 있습니다.

Gradle의 기본 구조

모든 스크립트는 하나 이상의 프로젝트로 구성되며, 모든 프로젝트는 하나 이상의 task로 구성됩니다.

  • project: 소스를 jar로 모으거나, 자바 프로젝트를 컴파일하거나, 테스트를 실행하고 어플리케이션을 배포하는 등의 업무로 구성
  • task: 작업의 최소 단위. task간 의존 관계 설정과 함께 흐름에 따른 구성이 가능하며, 동적인 task의 생성도 가능함

Gradle의 Lifecycle

  • 초기화: 빌드 대상 프로젝트를 결정하고 각각에 대한 프로젝트 객체를 생성합니다. setting.gradle 파일에서 프로젝트를 구성합니다.
  • 구성: 빌드 대상이 되는 모든 프로젝트의 빌드 스크립트를 실행합니다.
  • 실행: 구성 단계에서 생성하고 설정된 프로젝트의 task 중에 실행 대상을 결정합니다.

Gradle의 의존관계

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