Belajar Java - Tooling Modern & Build Automation
Series/Belajar Java/Episode 19
Episode 19 of 24

Belajar Java - Tooling Modern & Build Automation

Episode ini membahas tooling dan build automation Java: Maven versus Gradle Kotlin DSL, dependency management, plugin modern, build lifecycle, code formatting, linting, quality gates otomatis, skrip build reproducible, dan multi-module project.

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

Pendahuluan

Aplikasi modern butuh lebih dari sekadar compiler — butuh build tool yang mengelola dependency, menjalankan test, dan mengemas aplikasi. Episode 19 membahas tooling modern dan build automation: Maven, Gradle Kotlin DSL, build lifecycle, dan multi-module project.

Dua build tool mendominasi ekosistem Java: Maven yang deklaratif dan Gradle yang fleksibel. Kalian akan memahami kapan memakai yang mana, bagaimana mengotomasi build, dan bagaimana menjaga kualitas dengan code formatting dan quality gates.

Maven vs Gradle Kotlin DSL

Maven: Deklaratif dan Standar

Maven menggunakan file pom.xml berbasis XML dan konvensi yang ketat. Keunggulannya: keseragaman dan dukungan ekosistem terluas. Sebagian besar perusahaan enterprise memakai Maven.

Proyek Maven sederhana:

File pom.xml
<project>
  <modelVersion>4.0.0</modelVersion>
  <groupId>com.aplikasi</groupId>
  <artifactId>aplikasi-demo</artifactId>
  <version>1.0.0</version>
  <properties>
    <maven.compiler.release>21</maven.compiler.release>
  </properties>
</project>

Gradle Kotlin DSL: Fleksibel dan Cepat

Gradle memakai script (Groovy atau Kotlin DSL) yang imperatif, dengan keunggulan kecepatan lewat incremental build dan fleksibilitas penuh:

File build.gradle.kts
plugins {
    java
}
 
repositories {
    mavenCentral()
}
 
dependencies {
    testImplementation("org.junit.jupiter:junit-jupiter:5.10.3")
}
 
java {
    toolchain {
        languageVersion = JavaLanguageVersion.of(21)
    }
}

Pilih Maven untuk keseragaman dan ekosistem enterprise; pilih Gradle untuk proyek yang butuh kecepatan dan kustomisasi.

Dependency Management

Mengelola Dependency

Kedua build tool menarik dependency dari repository seperti Maven Central. Kelola versi dengan rapi — hindari banyak versi library yang saling konflik:

Melihat dependency tree Maven
mvn dependency:tree

mvn dependency:tree menampilkan seluruh dependency beserta versinya, berguna untuk mendeteksi konflik.

Build Lifecycle

Maven dan Gradle punya lifecycle terstruktur. Pada Maven: validate, compile, test, package, verify, dan install. Gradle memiliki task seperti compileJava, test, dan build:

Menjalankan build lengkap
mvn clean verify

mvn clean verify membersihkan hasil sebelumnya, mengompilasi, menjalankan test, dan memverifikasi kualitas.

Code Formatting, Linting, dan Quality Gates Otomatis

Code Formatting dengan Spotless

Spotless menjaga konsistensi format kode menggunakan standar seperti Google Java Format:

Plugin Spotless di Gradle
plugins {
    id("com.diffplug.spotless") version "6.25.0"
}
 
spotless {
    java {
        googleJavaFormat()
    }
}

Quality Gates Otomatis

Integrasikan linting dan static analysis (dari episode 17) ke dalam build agar menjadi quality gate — build gagal jika kualitas tidak memenuhi standar:

Menjalankan check kualitas
mvn verify
gradle check

gradle check menjalankan semua task verifikasi termasuk test dan static analysis.

Skrip Build Reproducible dan Multi-Module Project

Build Reproducible

Reproducible build menghasilkan artefak yang identik setiap kali dijalankan dengan input yang sama. Atur versi dependency secara eksplisit dan hindari snapshot yang berubah. Maven bisa menetapkan reproducible timestamp lewat project.build.outputTimestamp.

Multi-Module Project

Proyek besar dipecah menjadi beberapa modul yang saling bergantung. Di Maven, gunakan parent POM:

Parent POM multi-module
<project>
  <modelVersion>4.0.0</modelVersion>
  <groupId>com.aplikasi</groupId>
  <artifactId>aplikasi-parent</artifactId>
  <version>1.0.0</version>
  <packaging>pom</packaging>
  <modules>
    <module>core</module>
    <module>web</module>
  </modules>
</project>

Bangun semua modul sekaligus:

Membangun multi-module
mvn clean install

mvn clean install membangun semua modul secara berurutan sesuai dependency-nya dan menginstall ke repository lokal.

Penutup

Episode 19 membahas tooling modern: Maven yang deklaratif versus Gradle Kotlin DSL yang fleksibel, dependency management, build lifecycle, code formatting dengan Spotless, linting dan quality gates otomatis, build reproducible, serta multi-module project.

Inti yang harus dibawa pulang:

  • Maven memakai pom.xml; Gradle memakai Kotlin DSL yang imperatif.
  • mvn dependency:tree membantu mendeteksi konflik dependency.
  • Lifecycle Maven: compile, test, package, verify, install.
  • Spotless menjaga format; check menjadi quality gate.
  • Reproducible build menghasilkan artefak yang konsisten.
  • Multi-module project dipecah lewat parent POM.

Di episode 20 selanjutnya kita akan membahas microservices dan cloud-native Java — arsitektur microservices dan framework Java modern, pengenalan Spring Boot, Jakarta EE, Micronaut, Quarkus, dan Helidon, containerization Java dan native image GraalVM, serta integrasi service discovery, circuit breaker, dan observability. Saatnya membangun untuk cloud!

Belajar Java - Tooling Modern & Build Automation | Belajar Java