Episode ini membahas tooling Quarkus: Quarkus CLI, Maven plugin, dan Gradle plugin, Dev Services untuk database dan observability, live coding dan Dev UI, serta reproducible artifacts dan native image pipeline.

Developer experience bukan pelengkap — ia menentukan seberapa cepat kalian menghasilkan nilai. Quarkus dikenal dengan tooling yang membuat loop pengembangan sangat singkat: CLI yang lengkap, plugin Maven dan Gradle yang terintegrasi, Dev Services yang menghidupkan infrastruktur otomatis, dan Dev UI sebagai dashboard live.
Episode 19 membahas tooling modern dan build automation di Quarkus: Quarkus CLI, Maven dan Gradle plugin, Dev Services, live coding dan Dev UI, serta reproducible artifacts dan native image pipeline.
Quarkus CLI menyatukan hampir semua operasi dalam satu perintah:
quarkus create app com.example:proyek-baru
quarkus extension list
quarkus extension add cache
quarkus dev
quarkus build
quarkus build --nativeDari create sampai build, semua lewat CLI. Perintah quarkus dev adalah padanan ./mvnw quarkus:dev untuk project Maven maupun Gradle.
Fungsi yang sama tersedia lewat plugin build masing-masing:
./mvnw quarkus:dev
./mvnw quarkus:add-extension -Dextensions=redis-client
./mvnw quarkus:build -Dquarkus.package.type=native
./gradlew quarkusDev
./gradlew addExtension --extensions="redis-client"
./gradlew build -Dquarkus.package.type=nativePilih salah satu build tool dan konsisten. Quarkus CLI biasanya paling nyaman karena menyamarkan perbedaan Maven dan Gradle.
Dev Services adalah salah satu fitur paling mencolok Quarkus. Saat mode dev, extension database tanpa konfigurasi URL otomatis menjalankan database di Docker:
quarkus.datasource.db-kind=postgresqlTanpa jdbc.url, Quarkus memulai PostgreSQL dalam container saat dev mode dimulai dan menghentikannya saat dev mode berhenti. Container juga menyala untuk Kafka, Redis, dan banyak layanan lain.
mp.messaging.incoming.orders-in.connector=smallrye-kafka
quarkus.kafka.devservices.enabled=trueDengan quarkus.kafka.devservices.enabled=true, Quarkus menjalankan Redpanda atau Kafka dalam container. Kalian mendapat broker nyata tanpa setup manual — ideal untuk menguji reactive messaging (episode 15).
Live coding (episode 2) sudah menjadi default di mode dev. Perubahan kode, resource, atau konfigurasi diterapkan hampir instan. Dev UI di http://localhost:8080/q/dev menyediakan inspeksi visual:
Config : lihat dan ubah konfigurasi
Dev Services: status container berjalan
HTTP : daftar endpoint dan uji request
Health : status health checkDev UI adalah alat debugging yang jarang dimiliki framework lain. Gunakan untuk memeriksa bean, config, dan endpoint tanpa menulis test.
Dev UI aktif otomatis di profile dev. Untuk produksi, Dev UI tidak di-bundle secara default — pastikan quarkus.dev-ui.enabled tetap sesuai kebijakan keamanan.
Build yang reproducible menghasilkan output identik dari source yang sama. Aktifkan di application.properties:
quarkus.package.reproducible=truequarkus.package.reproducible=true membuat timestamp dan metadata reproducible, sehingga hasil build bisa diverifikasi dan dicache dengan aman.
Untuk integrasi berkelanjutan, pipeline native memerlukan langkah khusus:
./mvnw -B verify -DskipTests=false
./mvnw -B package -Pnative \
-Dquarkus.native.container-build=true \
-Dquarkus.native.native-image-xmx=3gBuild native di CI memakai container-build agar tidak bergantung pada GraalVM lokal, dan membatasi memori kompilasi dengan native-image-xmx. Episode 21 akan membahas integrasi penuh ke CI/CD.
Setelah build, verifikasi isi artifact:
ls -lh target/*-runner
ls -lh target/quarkus-app/
./target/*-runner --versionFile *-runner adalah native executable; folder quarkus-app berisi aplikasi JVM mode. --version memastikan executable berjalan.
Episode 19 mempertajam alur kerja kalian: memahami Quarkus CLI, Maven plugin, dan Gradle plugin, Dev Services yang menghidupkan infrastruktur otomatis, live coding dan Dev UI sebagai dashboard developer, serta reproducible artifacts dan pipeline native image.
Inti yang harus dibawa pulang:
/q/dev memudahkan inspeksi aplikasi saat development.quarkus.package.reproducible=true menghasilkan build reproducible.-Dquarkus.native.container-build=true.Di episode 20 selanjutnya kita akan membahas cloud-native deployment — Dockerizing Quarkus untuk container-ready deployment, Kubernetes deployment dan Helm chart, Knative dan serverless concepts, serta integrasi dengan platform AWS, GCP, Azure, dan Kubernetes.