요약 (Gradle과 Gradlew 차이점)
항목 | Gradle | Gradle Wrapper (gradlew) |
정의 | 빌드 도구 | Gradle을 자동 설치하고 실행하는 스크립트 |
설치 여부 | 시스템에 설치해야함 | Gradlew이 필요시 직접 다운로드 |
실행 대상 | 시스템에 설치된 gradle 실행 | 프로젝트 디렉토리의 gradlew파일들 |
Gradle이란?
Gradle은 빌드 스크립트를 기반으로 소프트웨어의 빌드, 테스트, 배포를 자동화하는 빌드 도구이다.
- 지원 언어 및 프레임워크
- Android, Java, Kotlin, Groovy, Scala, JS, C/C++
- 호환 IDE
- Android studio, IntelliJ, Visual Studio Code, Eclipse, NetBeans등 주요 IDE
- 터미널에서도 Gradle을 호출할 수 있다.
Gradle의 핵심 개념
프로젝트
- 빌드할 애플리케이션이나 라이브러리, 프로젝트 등 빌드 가능한 단위를 말한다.
- 단일 프로젝트 빌드에는 루트 프로젝트 하나만 존재한다.
- 다중 프로젝트 빌드에는 하나의 루트 프로젝트와 여러 개의 하위 프로젝트가 포함된다.
- settings.gradle로 프로젝트를 정의하고, 각 프로젝트는 독립적인 빌드 스크립트(build.gradle)를 가질 수 있다.
빌드 스크립트
- 프로젝트를 빌드하기 위해 거쳐야 하는 단계를 정의하는 스크립트
- 각 프로젝트에는 하나 이상의 빌드 스크립트가 포함된다.
- build.gradle, builde.gradle.kts 파일을 말하며, 플러그인, 종속성, 작업(Task)를 정의한다.
종속성 및 종속성 관리
- 종속성: 프로젝트가 컴파일시 필요로 하는 외부 라이브러리
- 종속성 관리: 프로젝트에 필요한 종속성(외부 리소스)를 선언하고 해결하기 위한 자동화된 기술
- Maven Central, JCenter 혹은 AWS EMR 아티팩트 레포지토리 등에서 다운로드하여 컴파일러와 런타임이 사용할 수 있도록 함
- 빌드 스크립트에서 repositories 하위에 사용할 종속성 저장소를 명시하고, dependencies에 사용할 종속성을 명시함
작업
- Gradle이 실행 가능한 단위 작업을 말한다. ex) 빌드, 테스트 등
- 하나 이상의 작업을 포함하며, 커스텀 작업도 선언 가능하다
플러그인
- Gradle의 기능을 확장하는 모듈로 프로젝트에 작업을 추가한다.
Gradle 프로젝트 구조
- 래퍼 파일 등을 저장하는 Gradle 디렉토리
- 종속성 관리를 위한 Gradle 버전 카탈로그
- Gradle 래퍼 스크립트 (아래에 자세히 설명할 예정)
- 프로젝트 구조 정의 (루트 프로젝트 이름, 서브 프로젝트 정의 등)
- 빌드 스크립트
- 소스 코드 디렉토리
버전 카탈로그?
Gradle 7부터 등장한 기능으로 .toml확장자 파일에 의존성 버전을 명시하는데 사용된다.
빌드 스크립트에서 참조할 수 있는 종속성 목록으로 종속성 관리를 간소화한다.
빌드 스크립트에서 종속성을 정의할때 아래와 같이 정의하고
dependencies {
implementation(libs.groovy.core)
}
libs.versions.toml파일에 아래와 같이 정의할 수 있다.
[libraries]
groovy-core = { group = "org.codehaus.groovy", name = "groovy", version = "3.0.5" }
Gradlew란?
Gradle Wrapper에 선언된 Gradle 버전을 호출하고, 필요의 경우 미리 다운로드하는 스크립트이다.
Gradlew을 사용하면, Gradle이 설치되어 있지 않은 환경에서도 빌드할 수 있으며, 다양한 환경에서도 같은 버전의 Gradle로 실행할 수 있다.
장점
- 다양한 환경에서 일관된 Gradle버전 사용 가능 (일관성)
- gradle-wrapper.properties에서 버전 변경만으로 쉽게 gradle 버전 변경 가능
- 시스템에 gradle 설치 없이 gradle 사용 가능
Gradle Wrapper 구성 요소
gradle-wrapper.jar
- Gradle Wrapper의 핵심 코드가 포함된 Wrapper JAR 파일
gradle-wrapper.properties
- Wrapper 런타임 동작을 구성하는 속성 파일
- Gradlew 어떤 버전을, 어디에 다운로드할지 설정
gradlew, gradlew.bat
- Wrapper로 실행하기 위한 셸 스크립트와 배치 스크립트
- 내부적으로 gradle-wrapper.properties를 참조하여 Gradle버전을 자동으로 다운로드 하고 실행함
Gradle Wrapper 사용
Gradle Wrapper 추가
Wrapper 파일을 생성해야하며 생성하려면 시스템에 Gradle이 설치되어있어야한다.
# 최신 버전 설치
gradle wrapper
# 버전 명시
gradle wrapper --gradle-version {gradleVersion}
프로젝트 루트 경로에서 해당 명령어를 실행하면, Wrapper와 관련한 파일들이 생성된다.
Gradle Wrapper 사용
gradlew이 설치되어있는 프로젝트에서 gradlew 혹은 gradlew.bat파일이 설치된 경로에 터미널에서 아래의 명령어를 입력하면 된다.
# 배치파일 직접 실행
gradlew.bat {task명}
# 스크립트 직접 실행
./gradlew {task명}
Gradle Wrapper 버전 변경
수동으로 변경하는 방법
- gradle-wrapper.properties파일에서 distributionUrl 속성을 직접 수정하면 된다.
distributionUrl=https\://services.gradle.org/distributions/gradle-{사용할 버전}-bin.zip
명령어로 변경하는 방법
- gradlew 파일이 있는 경로에서 해당 명령 호출
# 배치파일 직접 실행
gradlew.bat --gradle-version {사용할 버전}
# 스크립트 직접 실행
./gradlew --gradle-version {사용할 버전}
References
https://docs.gradle.org/current/userguide/gradle_basics.html
https://docs.gradle.org/current/userguide/gradle_wrapper.html
https://docs.gradle.org/current/dsl/org.gradle.api.tasks.wrapper.Wrapper.html#content
'CS' 카테고리의 다른 글
[JAVA] 배열(Array) 개념과 Arrays사용방법 정리 (0) | 2025.03.21 |
---|---|
정규화와 반정규화(비정규화)란? (1) | 2025.03.17 |
OSI 7계층과 계층별 역할 (1) | 2025.01.19 |
JWT와 사용 전략 (1) | 2024.08.27 |
[자료구조] AVL트리 [JAVA] (0) | 2020.08.30 |