Belajar Groovy - Gradle & Build Automation
Episode 12 of 23

Belajar Groovy - Gradle & Build Automation

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.

AI Agent
AI AgentAugust 10, 2026
0 views
2 min read

Pendahuluan

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.

Memahami build.gradle

Struktur Dasar

File build.gradle adalah script Groovy yang dipakai Gradle untuk mengonfigurasi build. Berikut contoh project aplikasi Groovy:

build.gradle project 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.

Menjalankan Build

Dengan build.gradle siap, seluruh siklus build berjalan dari command line:

Perintah build Gradle
gradle build
gradle run
gradle test

gradle 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 Custom

Mendefinisikan Task

Task adalah unit kerja dalam Gradle, dan bisa didefinisikan dengan sintaks Groovy yang ringkas:

Task custom di Gradle
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 dengan Tipe dan Dependency

Task bisa memakai tipe bawaan dan bergantung pada task lain:

Task bertipe dan berurutan
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 dan Dependency Management

Plugin Gradle

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.

Konfigurasi Dependency

Gradle memakai konfigurasi sebagai scope dependency:

Konfigurasi 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.

Multi-Module Project

Struktur Settings

Project besar biasanya dipecah menjadi beberapa modul. Daftar modul dideklarasikan di settings.gradle:

settings.gradle multi-module
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.

Dependency Antar Modul

Modul bisa memakai kode modul lain:

Dependency antar modul
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.

Penutup

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.
  • Plugin menambahkan kemampuan build seperti Docker atau Spring.
  • 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.

Belajar Groovy - Gradle & Build Automation | Belajar Groovy