Gradle 시작하기
Gradle은 Java와 Kotlin과 같이 JVM에서 돌아가는 프로그래밍 언어에서 거의 표준으로 자리집은 빌드 도구입니다. 이번 포스팅에서는 Kotlin 개발자 분들을 위해서 Gradle에 대해 간단히 소개해드리도록 하겠습니다.
(출처: https://docs.gradle.org/current/userguide/gradle_basics.html)
기존 프로젝트
기존 Kotlin 프로젝트에 합류하시는 개발자이시라면 이미 Gradle로 빌드를 하고 있을 확률이 매우 높은데요. 이미 Gradle가 빌드 도구로 설정되어 있는 프로젝트에서는 Gradle을 설치에 대해서 따로 신경쓰실 필요가 없습니다.
다음과 같이 프로젝트의 최상위 경로에 gradle
폴더와 gradlew
파일과 gradlew.bat
파일이 존재한다면 해당 프로젝트는 이미 Gradle을 쓰고 있다고 보시면 됩니다.
├── gradle
│ ├── libs.versions.toml
│ └── wrapper
│ ├── gradle-wrapper.jar
│ └── gradle-wrapper.properties
├── gradlew
├── gradlew.bat
그래도 한 번 더 확인을 해보시려면 간단하게 버전을 확인해보세요.
MacOS와 같은 리눅스 계열 운영 체제에서는 쉘(shell) 스크립트를 담고 있는 gradlew
파일을 실행하고, 윈도우즈 운영 체제에서는 배치(batch) 스크립트를 담고 있는 gradlew.bat
파일을 실행하면 됩니다.
$ ./gradlew -v
------------------------------------------------------------
Gradle 8.12.1
------------------------------------------------------------
Build time: 2025-01-24 12:55:12 UTC
Revision: 0b1ee1ff81d1f4a26574ff4a362ac9180852b140
Kotlin: 2.0.21
Groovy: 3.0.22
Ant: Apache Ant(TM) version 1.10.15 compiled on August 25 2024
Launcher JVM: 23.0.2 (Homebrew 23.0.2)
Daemon JVM: /opt/homebrew/Cellar/openjdk/23.0.2/libexec/openjdk.jdk/Contents/Home (no JDK specified, using current Java home)
OS: Mac OS X 15.3 aarch64
여기서 gradle
명령어를 바로 실행하지 않고, 프로젝트의 최상위 경로에 있는 gradlew
파일이나 gradlew.bat
파일을 실행하는 이유는 Gradle Wrapper를 쓰기 위함인데요.
이 부분에 대해서는 아래에서 좀 더 자세히 설명드리도록 하겠습니다.
Gradle 설치
새로운 프로젝트를 시작하시거나, 기존 프로젝트의 빌드 도구를 Ant나 Maven에서 Gradle로 바꿔야 하는 경우에는 컴퓨터에 Gradle을 설치해줘야 합니다.
MacOS에서는 Homebrew를 통해서 손쉽게 설치할 수 있습니다.
$ brew install gradle
그 밖에 운영체제에서는 여기에서 설치 파일을 다운로드 받은 후에 설치할 수 있습니다.
프로젝트 생성
Gradle은 손쉽게 JVM 언어로 프로젝트를 생성할 수 있도록 CLI 명령어를 제공합니다.
터미널에서 gradle init
실행하면 나오는 몇 가지 질문에만 답변하면 뚝딱 프로젝트가 만들어집니다.
예를 들어, our-gradle
이라는 빈 디렉토리를 만들고, 그 안 Kotlin 프로젝트를 만들어볼까요?
언어를 선택하는 질문에만 Kotlin으로 답변하고 나머지 질문에서는 모두 그냥 엔터 키를 눌러서 기본 값을 사용합니다.
$ mkdir our-gradle && cd our-gradle
$ gradle init
Starting a Gradle Daemon (subsequent builds will be faster)
Select type of build to generate:
1: Application
2: Library
3: Gradle plugin
4: Basic (build structure only)
Enter selection (default: Application) [1..4]
Select implementation language:
1: Java
2: Kotlin
3: Groovy
4: Scala
5: C++
6: Swift
Enter selection (default: Java) [1..6] 2
Enter target Java version (min: 7, default: 21):
Project name (default: our-gradle):
Select application structure:
1: Single application project
2: Application and library project
Enter selection (default: Single application project) [1..2]
Select build script DSL:
1: Kotlin
2: Groovy
Enter selection (default: Kotlin) [1..2]
Select test framework:
1: kotlin.test
2: JUnit Jupiter
Enter selection (default: kotlin.test) [1..2]
Generate build using new APIs and behavior (some features may change in the next minor release)? (default: no) [yes, no]
> Task :init
Learn more about Gradle by exploring our Samples at https://docs.gradle.org/8.12.1/samples/sample_building_kotlin_applications.html
BUILD SUCCESSFUL in 47s
1 actionable task: 1 executed
명령어 실행이 끝나면 프로젝트 디렉토리 구조가 다음과 같은 모습이 될 것입니다. 바로 애플리케이션 코드와 테스트 코드를 작성할 수 있도록 전형적인 Kotlin 프로젝트의 구조가 잡히게 됩니다.
$ tree
.
├── app
│ ├── build.gradle.kts
│ └── src
│ ├── main
│ │ ├── kotlin
│ │ │ └── org
│ │ │ └── example
│ │ │ └── App.kt
│ │ └── resources
│ └── test
│ ├── kotlin
│ │ └── org
│ │ └── example
│ │ └── AppTest.kt
│ └── resources
├── gradle
│ ├── libs.versions.toml
│ └── wrapper
│ ├── gradle-wrapper.jar
│ └── gradle-wrapper.properties
├── gradle.properties
├── gradlew
├── gradlew.bat
└── settings.gradle.kts
15 directories, 10 files
Gradle 실행
위에서 Gradle이 이미 사용하고 있는 프로젝트에서 별다른 설치 작업 없이 그냥 바로 Gradle을 사용할 수 있었는데요. 그 이유는 바로 프로젝트에 이미 설정되어 있는 Gradle Wrapper를 통해서 Gradle을 실행했기 때문입니다.
Gradle은 프로젝트를 생성할 때를 제외하고는 Gradle Wrapper를 통해서 사용하는 것이 권장되는데요. 그래야 프로젝트에서 협업하는 모든 개발자가 동일한 버전의 Gradle을 사용하는 것이 보장되기 때문입니다.
- 권장되지 않음 🙅♂️🙅♀️
$ gradle build
- 권장 됨 (리눅스 계열) 🙆♂️
$ ./gradlew build
- 권장 됨 (윈도우즈) 🙆♀️
$ .\gradlew.bat build
IntelliJ나 Android Studio와 같이 Gradle과 통합이 잘 되어 있는 코드 편집기를 사용하신다면 Gradle을 실행하기 위한 자체적인 UI를 제공합니다. 그래서 터미널을 통해서 Gradle을 실행하기보다는 이러한 자체 UI를 활용하는 경우도 많습니다.
Gradle 설정
일반적으로 Gradle 프로젝트는 하나의 상위(root) 프로젝트와 하나 이상의 하위(sub) 프로젝트로 구성되는데요.
프로젝트 최상위 경로의 settings.gradle.kts
파일을 통해서 상위 프로젝트의 이름과 하위 프로젝트의 목록을 명시할 수 있습니다.
plugins {
id("org.gradle.toolchains.foojay-resolver-convention") version "0.8.0"
}
rootProject.name = "gradle-temp"
include("app")
예를 들어, 우리가 방금 생성한 프로젝트의 settings.gradle.kts
파일을 보면 위와 같이 설정이 되어 있을텐데요.
상위 프로젝트 이름이 gradle-temp
이고, 하위 프로젝트로 app
하나가 있다는 것을 알 수 있습니다.
마치며
지금까지 Gradle을 처음 접하시는 분들을 위해서 Gradle를 사용하는 아주 기초적인 방법에 대해서 살펴보았습니다. 다음 포스팅에서는 Gradle로 어떻게 프로젝트의 빌드를 설정하고 작업으로 실행할 수 있는지 알아보겠습니다.