IT

Gradle 이란 Gradle 특징 Gradle Wrapper

forest-33 2024. 2. 15. 21:30

 

Gradle 이란

  • Gradle은 자바 기반 프로젝트를 빌드하고 관리하기 위한 오픈 소스 빌드 자동화 도구

Gradle 특징

  • Groovy 및 Kotlin DSL(Domain Specific Language)
    • Gradle은 빌드 스크립트를 작성할 때 Groovy 또는 Kotlin과 같은 동적 언어를 사용
    • XML에 비해 코드의 가독성이 높아지고, 표현력이 풍부해져 유연한 빌드 스크립트를 작성 가능하다
  • 인큐빌드 및 성능
    •  Gradle은 변경된 부분만 다시 빌드함으로써 인크리멘털 빌드를 지원
    • 인크리멘털 빌드는 변경된 부분만 다시 빌드하여 전체 빌드 시간을 최소화하는 기능으로 Gradle은 이전 빌드에서 생성된 캐시 정보를 사용하여 변경된 파일 및 의존성만 다시 빌드한다. 이를 통해 빠른 반복적인 빌드 및 테스트를 가능하게하게 함
  • 멀티 프로젝트 빌드
    •  Gradle은 여러 프로젝트를 동시에 관리하고 빌드할 수 있는 기능을 제공 
    • 루트 프로젝트와 서브 프로젝트 간의 의존성을 쉽게 설정할 수 있으며, settings.gradle 파일에서 서브 프로젝트 정의
  • 다양한 플러그인
    •  Gradle은 다양한 플러그인을 지원하고 있어 특정 작업이나 통합에 필요한 기능을 손쉽게 확장 가능
  • Gradle Wrapper
    • Gradle은 빌드를 위해 특정 Gradle 버전을 설치하지 않고도 프로젝트를 빌드할 수 있도록 'Gradle Wrapper'를 제공함
    • 아래서 좀 더 자세히 설명함
  • 편리한 의존성 관리
    • Maven과 비슷하게 외부 라이브러리와의 의존성 관리가 용이하며
    • Maven Central Repository와 JCenter 등 다양한 리포지토리에서 라이브러리를 가져올 수 있음

 


Gradle Wrapper

  • Gradle Wrapper를 사용하면 프로젝트의 루트 디렉토리에 gradlew 또는 gradlew.bat (Windows용) 파일과
  • gradle/wrapper 디렉토리에 gradle-wrapper.jar와 gradle-wrapper.properties 파일이 생성된다. 
  • 이 파일들은 프로젝트에 필요한 Gradle 버전을 내장하고 있음

gradle 프로젝트 구조

 

Gradle Wrapper의 주요 구성 요소

  1. gradle-wrapper.jar: Gradle Wrapper의 핵심 파일로, Gradle 버전을 내장하고 필요한 리소스들을 포함하고 있음
  2. gradle-wrapper.properties: Gradle Wrapper의 설정 파일로, Gradle 버전 및 다운로드 URL 등을 설정할 수 있음

gradle-wrapper.properties 파일 내용

 

  • distributionBase=GRADLE_USER_HOME
    • 이 속성은 Gradle이 다운로드한 파일들을 저장할 기본 디렉토리를 지정
    • GRADLE_USER_HOME은 기본적으로 사용자의 홈 디렉토리를 나타내며,  다운로드한 Gradle 파일들은 사용자의 홈 디렉토리 내의 .gradle 디렉토리에 저장된다.
  • distributionPath=wrapper/dists
    • Gradle이 다운로드한 파일들이 실제로 저장될 경로를 지정
    • wrapper/dists는 distributionBase에서 설정한 디렉토리 내에 위치하게 됨.
  • distributionUrl=https\://services.gradle.org/distributions/gradle-8.2-bin.zip
    • 이 속성은 Gradle Wrapper가 다운로드할 Gradle 배포 버전 및 압축 파일의 URL을 지정
    •  Gradle 8.2 버전의 이진 (bin) 파일을 다운로드하는 URL을 설정
  • zipStoreBase=GRADLE_USER_HOME
    • Gradle Wrapper가 다운로드한 압축 파일을 저장할 기본 디렉토리를 지정
  • zipStorePath=wrapper/dists
    • 압축 파일이 저장될 경로를 지정
    • 이 경로는 zipStoreBase에서 설정한 디렉토리 내에 위치하게 됨

 

정리해보면 distributionUrl에 설정된 URL 에서 zip 파일을 다운로드 한 후
zipStoreBase 및 zipStorePath 에 지정된 디렉토리에 저장
Gradle Wrapper는 이후 프로젝트 빌드 시 필요한 Gradle 실행 파일과 라이브러리 등을 압축 해제하여 사용

 


 

Gradle Wrapper 설정 / 사용 단계

  1. 프로젝트 루트 디렉토리에 gradlew 또는 gradlew.bat 파일 생성:
    • Gradle Wrapper를 사용하려면 프로젝트 루트 디렉토리에 gradlew(Unix계열) 또는 gradlew.bat (Window) 파일을 생성
  2. gradle/wrapper 디렉토리에 gradle-wrapper.jar 및 gradle-wrapper.properties 파일 생성
    • gradlew 파일이나 gradlew.bat 파일을 실행하면, 필요한 Gradle 버전과 설정이 gradle-wrapper.jar 및 gradle-wrapper.properties에서 가져와 사용된다.
  3. Gradle 버전 및 다운로드 URL 설정:
    • gradle-wrapper.properties 파일에서 distributionUrl 속성을 원하는 Gradle 버전으로 설정하면 된다.
  4. Gradle Wrapper를 통한 빌드 실행 
    • 프로젝트 루트 디렉토리에서 ./gradlew (Unix) 또는 gradlew.bat (Windows) 명령어로 실행