Episode ini menguasai build tools dan konfigurasi project: Gradle Kotlin DSL dan build scripts, dependency management dengan source sets dan plugins, multi-module projects dan optimasi build performance, serta publishing artifacts dan versioning yang benar.

Sebuah project Kotlin yang sehat tidak ditentukan hanya oleh kodenya, tetapi juga oleh konfigurasi build-nya. Episode 14 menguasai Gradle Kotlin DSL: menulis build scripts dengan bahasa Kotlin itu sendiri, mengelola dependency, menyusun multi-module projects, dan mempublikasikan artifact.
Gradle adalah build tool dominan di ekosistem Kotlin. Dengan Kotlin DSL, file build menjadi type-safe: kesalahan konfigurasi terdeteksi saat kompilasi, bukan saat runtime. Ini membawa paradigma Kotlin ke lapisan build itu sendiri.
Setelah episode ini, kalian akan membangun project multi-module yang rapi dan memahami cara kerja Gradle di balik layar.
Project Gradle Kotlin terdiri dari settings.gradle.kts untuk konfigurasi project dan build.gradle.kts untuk tiap modul. Contoh file modul sederhana:
plugins {
kotlin("jvm") version "2.0.0"
application
}
repositories {
mavenCentral()
}
dependencies {
implementation("org.jetbrains.kotlinx:kotlinx-coroutines-core:1.9.0")
testImplementation(kotlin("test"))
}
application {
mainClass.set("id.devnull.MainKt")
}kotlin("jvm") memakai plugin resmi Kotlin, repositories menentukan tempat Gradle mencari dependency, dan application mengonfigurasi main class untuk ./gradlew run. Seluruh file adalah kode Kotlin — lengkap dengan type checking dan autocomplete di IDE.
Selalu gunakan Gradle Wrapper agar versi Gradle terkunci per project. File gradle/wrapper/gradle-wrapper.properties menentukan versi, dan ./gradlew menjalankan versi tersebut tanpa perlu menginstall Gradle global:
./gradlew build
./gradlew --version./gradlew build mengkompilasi, mengeksekusi test, dan mengemas aplikasi. Wrapper menjamin semua anggota tim memakai versi Gradle yang sama, menghilangkan masalah "bekerja di mesin saya".
Dependency dideklarasikan dalam blok dependencies dengan konfigurasi seperti implementation, testImplementation, dan api. Untuk project besar, version catalog (libs.versions.toml) memusatkan versi dependency di satu tempat:
[versions]
kotlin = "2.0.0"
coroutines = "1.9.0"
[libraries]
kotlinx-coroutines-core = { module = "org.jetbrains.kotlinx:kotlinx-coroutines-core", version.ref = "coroutines" }Blok TOML di atas mendefinisikan versi dan library terpusat. Di build.gradle.kts, pemakaiannya menjadi implementation(libs.kotlinx.coroutines.core). Version catalog menyederhanakan upgrade dan menjaga konsistensi versi antar modul.
Panduan singkat konfigurasi:
implementation: dependency dipakai modul ini, tidak diekspos ke konsumen.api: dependency diekspos ke API publik modul.testImplementation: dependency hanya untuk test.compileOnly: dependency tersedia saat kompilasi, disediakan runtime.Memilih konfigurasi yang benar mencegah dependency bocor dan mempercepat build.
Project besar dipecah menjadi modul agar batas arsitektur terlihat dan kompilasi paralel. Struktur umum: :core:model untuk data, :core:domain untuk logika bisnis, dan :app untuk aplikasi. Setup di settings.gradle.kts:
rootProject.name = "belajar-kotlin"
include(":core:model")
include(":core:domain")
include(":app")include mendaftarkan tiap modul. Gradle menganalisis dependency antar modul untuk mengoptimalkan build incrementally dan mem-parallel-kan modul yang independen.
Beberapa praktik menjaga build tetap cepat:
./gradlew build --build-cache.Kombinasi wrapper yang konsisten dan cache yang aktif membuat build di CI dan lokal berjalan cepat dan deterministik.
Library yang ingin dibagikan dipublikasikan sebagai artifact. Plugin maven-publish mengkonfigurasi publikasi:
plugins {
`maven-publish`
}
publishing {
publications {
create<MavenPublication>("maven") {
from(components["java"])
}
}
repositories {
maven {
url = uri("https://my.repo.dev")
}
}
}Blok publishing mendefinisikan artifact dan repository tujuan. Perintah ./gradlew publish mengunggah artifact ke repository, sehingga modul lain atau tim lain bisa memakainya sebagai dependency.
Versioning yang benar menggunakan Semantic Versioning: MAJOR.MINOR.PATCH. Naikkan MAJOR untuk perubahan breaking, MINOR untuk fitur baru, dan PATCH untuk perbaikan bug. Gradle membaca versi dari properti version, dan CI bisa mengotomatiskan kenaikan versi berdasarkan jenis commit — pola yang akan kalian lihat di episode 19.
Episode 14 menguasai build tools dan konfigurasi: Gradle Kotlin DSL yang type-safe, version catalog untuk dependency terpusat, multi-module projects dengan build performance, serta publishing artifacts dan versioning semantik.
Inti yang harus dibawa pulang:
Di episode 15 selanjutnya kita akan membahas performance optimization — JVM tuning untuk aplikasi Kotlin, inline functions dan reified types, memory management dengan minimasi alokasi, serta profiling tools dan pola optimasi yang benar-benar berdampak.