Episode ini membahas Gradle sebagai build tool yang memakai Groovy sebagai bahasa DSL: build.gradle, task custom, plugin, dan dependency management. Kalian juga akan belajar menyusun project multi-module dan menjalankan build dari command line.

Gradle adalah build tool modern yang menuliskan seluruh konfigurasinya dalam Groovy DSL. Dengan kata lain, setiap build.gradle yang kalian temui di project Java sebenarnya adalah kode Groovy — dan skill dari episode 9 langsung berlaku.
Episode 12 membahas struktur build.gradle, task custom, plugin, dependency management, serta project multi-module. Kalian akan membangun dan mengotomasi project Groovy dari awal.
File build.gradle adalah script Groovy yang dipakai Gradle untuk mengonfigurasi build. Berikut contoh project aplikasi Groovy:
plugins {
id 'groovy'
id 'application'
}
repositories {
mavenCentral()
}
dependencies {
implementation 'org.codehaus.groovy:groovy:4.0.24'
testImplementation 'org.spockframework:spock-core:2.3-groovy-4.0'
}
application {
mainClass = 'com.example.Main'
}plugins { id 'groovy' } menambahkan dukungan kompilasi Groovy, dan dependencies { implementation 'org.codehaus.groovy:groovy:4.0.24' mendeklarasikan dependency Groovy itu sendiri. Blok-blok ini adalah DSL Groovy yang kita pelajari di episode 9.
Dengan build.gradle siap, seluruh siklus build berjalan dari command line:
gradle build
gradle run
gradle testgradle build mengkompilasi, menguji, dan memaketkan aplikasi; gradle run menjalankan aplikasi dari mainClass; gradle test menjalankan test Spock dan JUnit. Gradle menyediakan daemon agar build berikutnya lebih cepat.
Task adalah unit kerja dalam Gradle, dan bisa didefinisikan dengan sintaks Groovy yang ringkas:
tasks.register("hello") {
doLast {
println "Halo dari Gradle!"
}
}
tasks.register("cekVersi") {
doLast {
println "Versi Groovy: ${GroovySystem.version}"
}
}tasks.register("hello") { doLast { ... } } membuat task yang dieksekusi dengan gradle hello. Kode dalam blok doLast adalah Groovy murni, sehingga bisa memakai closure, string interpolasi, dan collection.
Task bisa memakai tipe bawaan dan bergantung pada task lain:
tasks.register("laporan", Copy) {
from("src/main/resources")
into("build/laporan")
dependsOn "build"
}tasks.register("laporan", Copy) membuat task bertipe Copy, dan dependsOn "build" memastikan gradle build dijalankan lebih dulu. Gradle secara otomatis membangun grafik dependency antar task dan mengeksekusinya dalam urutan yang benar.
Plugin menambahkan perilaku build. Beberapa plugin penting:
groovy dan java: kompilasi bahasa.application: menjalankan dan memaketkan aplikasi.io.spring.dependency-management: mengelola versi dependency secara terpusat.com.bmuschko.docker-remote-api: membangun image Docker.Plugin dipakai dengan plugins { id 'nama' version 'x.y.z' }, dan untuk plugin komunitas, version harus dicantumkan di blok plugins.
Gradle memakai konfigurasi sebagai scope dependency:
dependencies {
implementation 'org.slf4j:slf4j-api:2.0.13'
runtimeOnly 'ch.qos.logback:logback-classic:1.5.6'
testImplementation 'org.spockframework:spock-core:2.3-groovy-4.0'
}implementation untuk dependency yang dipakai aplikasi, runtimeOnly untuk library runtime seperti logback, dan testImplementation untuk dependency test. dependencies { testImplementation 'org.spockframework:spock-core:2.3-groovy-4.0' memastikan Spock hanya tersedia saat menjalankan test.
Project besar biasanya dipecah menjadi beberapa modul. Daftar modul dideklarasikan di settings.gradle:
rootProject.name = 'belajar-groovy'
include 'core', 'web', 'cli'include 'core', 'web', 'cli' mendaftarkan tiga modul. Setiap modul punya build.gradle sendiri, dan modul bisa bergantung satu sama lain.
Modul bisa memakai kode modul lain:
dependencies {
implementation project(':core')
}implementation project(':core') membuat modul web dan cli memakai class dari modul core. project(':core') adalah referensi khusus untuk modul dalam project yang sama, memungkinkan pembagian kode tanpa mempublikasikan artifact terpisah.
Episode 12 membuat kalian produktif dengan Gradle: memahami build.gradle sebagai Groovy DSL, mendefinisikan task custom, memakai plugin, mengelola dependency, serta menyusun project multi-module.
Inti yang harus dibawa pulang:
build.gradle adalah script Groovy dengan DSL khusus build.tasks.register mendefinisikan task custom.dependsOn membangun urutan eksekusi antar task.implementation, runtimeOnly, dan testImplementation mengatur scope dependency.include dan project() menyusun arsitektur multi-module.Di episode 13 selanjutnya kita akan membahas Jenkins pipeline dan CI/CD — Groovy scripting untuk Jenkinsfile dan declarative pipeline, stages, steps, shared libraries, agent configuration, serta integrasi dengan Git, testing, dan deployment automation.