Apa itu Gradle dan Bagaimana Cara Menggunakannya di Java?
Setelah belajar dasar Java, bisa nggak kita lanjut belajar android?
Bisa-bisa saja.
Tapi tunggu dulu!
Ada sebuah tool yang harus kamu ketahui.
Yaitu:
Banyak yang salah saat baru mulai belajar pemrograman Android.
Berbekal pengetahuan Java, mereka langsung belajar android begitu saja.
Padahal gradle wajib diketahui.
Selain Gradle, kamu juga harusnya belajar XML untuk memahami layout di android.
Gradle akan membantu kita dalam mengembangkan aplikasi android, bahkan tidak hanya android saja.
Gradle juga dapat digunakan untuk mengembangkan aplikasi lain, seperti Web, Desktop, Bot, dll.
Apa sih Gradle itu?
Apa kegunaannya di Java dan Android?
Mengapa kita harus menggunakan Gradle?
Mari kita bahas…
Apa itu Gradle?
Gradle adalah sebuah program yang berfungsi untuk melakukan build secara otomatis. Karena itu, Gradle sering disebut sebagai build-tool.
Build di sini bisa kita artikan sebagai aktivitas melakukan compile dan packaging.
Bukannya kita bisa compile java melalui command line seperti ini:
javac HelloWorld.java
Yap! bisa saja.
Tapi masalahnya kalau ada banyak file Java dan ada library yang dipakai..
Bagaimana kita compile-nya?
Belum lagi, library yang satu membutuhkan library yang lain dan harus men-download-nya.
Pasti ribet kan..
Nah di sinilah kita butuh build tools seperti Gradle.
Konsep kerja Gradle sama seperti Apache Ant dan Apache Maven.
Namun, bedanya terletak pada bahasa DSL yang digunakan. Gradle menggunakan Groovy dan Kotlin, sedangkan Maven dan Ant menggunakan XML.
Gradle tidak hanya digunakan untuk Java, Gradle juga bisa digunakan untuk bahasa pemrograman Lain seperti C++, Groovy, Javascript, Kotlin, Scala, dll.
Instalasi Gradle
Ada beberapa cara untuk menginstal gradle:
- Melalui SDKman
- Melalui Paket Zip
- Melalui package manager seperti
apt-get
,yum
,zhypper
, dll.
Cara termudah, yang mana?
Menurut saya, cara yang paling mudah: Nomer 1
dan 3
.
Karena kita tinggal jalankan perintahnya…
…dan Gradle akan terinstal.
Namun, masing-masing memiliki kelebihan dan kekurangan.
Untuk lebih jelasnya mari kita bahas dan coba.
1. Cara Install Gradle dengan SDKman
SDKman atau SDK Manager adalah sebuah tools yang digunakan untuk instal dan update SDK seperti JDK, Android SDK dan tools lainnya.
SDKman juga bisa digunakan di Windows dan Mac OS, jadi buat kamu yang menggunakan sistem operasi itu.. bisa ikuti cara ini.
Sebelum instal Gradle dengan SDKman, kita harus menginstal SDKman-nya terlebih dahulu.
Silakan buka terminal dan ketik perintah berikut:
curl -s "https://get.sdkman.io" | bash
source "$HOME/.sdkman/bin/sdkman-init.sh"
Setelah itu, baru kita bisa instal Gradle dengan perintah ini:
sdk install gradle
Maka SDKman akan menginstal Gradle versi terakhir.
Tunggulah sampai prosesnya selesai.
Oh iya, kamu juga bisa menginstal versi yang lain secara spesifik dengan perintah seperti ini:
sdk install gradle 6.0.1
2. Install Gradle Secara Manual
Kita juga bisa meninstal gradle secara manual dengan men-download file binary-nya.
Silakan buka https://gradle.org/releases/ untuk mendapatkan link download.
Kemudian ketik perintah berikut untuk menginstal.
# buat folder tempat instal gradle
mkdir -p ~/apps/gradle
# download gradle
wget https://services.gradle.org/distributions/gradle-6.0.1-bin.zip -O gradle.zip
# ekstrak gradle
unzip gradle.zip -d ~/apps/gradle
Setelah itu, kita tinggal tambahkan alamat PATH folder gradle ke dalam environment variabel.
Caranya, buka file .bashrc
kemudian
tambahkan kode berikut di akhir file
tersebut:
export PATH=$PATH:~/apps/gradle/bin
3. Cara Install Gradle Melalui APT
Gradle juga tersedia di repositori Ubuntu,
jadi kamu bisa menginstalnya dengan perintah apt
.
Tetapi biasanya hanya ada versi lama saja. Untuk versi terbaru, saya sarankan menggunakan SDKman atau instal manual.
Setelah instal Gradle jangan lupa dicek, apakah sudah terinstal dengan benar atau belum
Caranya, ketik saja perintah:
gradle -version
Jika muncul seperti ini:
Berarti gradle sudah terinstal dengan benar dan berikutnya kita tinggal belajar menggunakannya.
Membuat Project Java dengan Gradle
Ada dua cara yang bisa kamu lakukan untuk membuat proyek Java dengan Gradle.
- Melalui command line,
- Melalui IDE seperti Netbeans, Intellij, dll.
Kita akan coba dulu melalui Command Line.
Baiklah, silakan buka Terminal atau CMD. Kemudian ketik perintah berikut:
# membuat folder
mkdir belajar-gradle
cd belajar-gradle
Setelah itu, ketik:
gradle init
Setelah itu, kita akan diminta untuk menentukan jenis proyek, bahasa pemrograman, framework testing, dan DSL untuk konfigurasi Gradle.
Silakan pilih:
- Jenis Proyek pilih
2: Application
- Bahasa pilih
3: Java
- DSL pilih
1: Groovy
- Test Framework pilih
1: JUnit 4
Untuk nama proyek dan source package, dikosongkan saja.
Kalau belum jelas, silakan ikuti ini:
Perintah gradle ini
akan membuatkan
kita proyek baru sesuai dengan pilihan
yang sudah kita tentukan.
Ini adalah struktur direktori dari hasil yang baru saja kita buat:
Kamu juga bisa mengeceknya sendiri.
Proyek ini tentunya akan bisa juga kita buka di IDE yang mendukung Gradle.
Berikut ini penjelasan dari struktur direktori tersebut:
- 📁
gradle
berisi gradle wrapper; - 📁
src
berisi source code Java, di sini lah kita akan menulis program; - 📁
test
berisi kode untuk testing dengan JUnit; - 📄
build.gradle
berisi informasi tentang project, library yang dibutuhkan aplikasi, plugin dan repository yang digunakan, task yang akan dikerjakan gradle, dll. Intinya file ini lah yang akan digunakan oleh gradle sebagai instruksi untuk melakukan build aplikasi. - 📄
gradlew
adalah file binary untuk menjalankan gradle warapper di Lunux dan Mac OS - 📄
gradlew.bat
adalah file binary untuk menjalankan gradle warapper di Windows - 📄
settings.gradle
berisi informasi tentang konfigurasi untuk gradle, seperti proyek mana yang akan di-build.
Struktur direktori ini akan bergantung dari jenis proyek yang kita buat. Misalnya proyek android, tentu akan berbeda dengan yang ini.
Apa itu Gradle Wrapper?
Gradle wrapper adalah gradle yang tertanam di dalam proyek. Gradle wrapper akan diinstal di setiap menjalankan proyek baru.
Mengapa tidak menggunakan gradle yang sudah kita install di komputer?
Karena agar versi gradle yang digunakan tetap sama.
Misalkan kita bekerja di dalam tim, nah kita tidak tahu setiap anggota tim yang lainnya menggunakan gradle versi berapa.
Bisa saja versi lama, bisa juga versi yang baru. Beda versi beda juga konfigurasinya.
Nah agar proyeknya tidak rusak, maka kita bisa kunci versi gradle-nya dengan menggunakan gradle wrapper.
Jadi setiap anggota tim yang akan menjalankan proyek tersebut, akan menginstal versi gradle yang sama.
Mau bukti?
OK, sekarang coba jalankan gradle-nya dengan mengetik:
# Linux dan mac
./gradlew
# windows
gradlew
Hasilnya:
Ini akan berjalan cukup lama, tergantung dari koneksi internetmu.
Jika cepat, ya cepat. Jika lambat ya lambat..
Jadi jangan heran, saat kamu membuka proyek android milik orang lain dan saat dijalankan pertama kali pasti akan lama.
Karena ia harus men-download gradle dulu dan library yang dibutuhkan.
Setelah itu baru melakukan compile dan build.
Build dan Run Aplikasi
Sekarang sudah siap, mari kita coba build dan run aplikasinya.
Silakan ketik perintah berikut untuk build.
# Linux dan mac
./gradlew build
# windows
gradlew build
Tunggu sampai prosesnya selesai.
Maka hasilnya akan ada folder baru dengan
nama build
.
Folder ini berisi file yang siap untuk didistribusikan
seperti file .class
, JAR
, TAR
dan ZIP
.
Jika kamu menggunakan gradle pada android,
biasanya di sana akan ada output APK
.
Lalu untuk menjalankan aplikasinya bagaimana?
Gampang, kita tinggal ganti build
menjadi run
saja.
# Linux dan mac
./gradlew run
# windows
gradlew run
Maka hasilnya:
Nah, jika kamu ingin membersihkan hasil build.. maka bisa menggunakan perintah:
# Linux dan mac
./gradlew clean
# windows
gradlew clean
Membuat Task untuk Gradle
Gradle bekerja dengan mengikuti task (tugas) yang kita berikan.
Sebenarnya saat kita menjalankan build
, run
,
dan clean
.. kita sedang menyuruh gradle untuk
mengerjakan task tersebut.
Kita juga bisa membuat custom task sendiri
di dalam file build.gradle
.
Tapi sebelum itu, mari kita lihat dulu daftar task yang sudah ada di dalam proyek ini.
Caranya ketik perintah:
# Linux dan Mac
./gradlew task
# Windows
gradlew task
Hasilnya:
Hasil Lengkap
dian@petanikode~/t/belajar-gradle> ./gradlew task
> Task :tasks
------------------------------------------------------------
Tasks runnable from root project
------------------------------------------------------------
Application tasks
-----------------
run - Runs this project as a JVM application
Build tasks
-----------
assemble - Assembles the outputs of this project.
build - Assembles and tests this project.
buildDependents - Assembles and tests this project and all projects that depend on it.
buildNeeded - Assembles and tests this project and all projects it depends on.
classes - Assembles main classes.
clean - Deletes the build directory.
jar - Assembles a jar archive containing the main classes.
testClasses - Assembles test classes.
Build Setup tasks
-----------------
init - Initializes a new Gradle build.
wrapper - Generates Gradle wrapper files.
Distribution tasks
------------------
assembleDist - Assembles the main distributions
distTar - Bundles the project as a distribution.
distZip - Bundles the project as a distribution.
installDist - Installs the project as a distribution as-is.
Documentation tasks
-------------------
javadoc - Generates Javadoc API documentation for the main source code.
Help tasks
----------
buildEnvironment - Displays all buildscript dependencies declared in root project 'belajar-gradle'.
components - Displays the components produced by root project 'belajar-gradle'. [incubating]
dependencies - Displays all dependencies declared in root project 'belajar-gradle'.
dependencyInsight - Displays the insight into a specific dependency in root project 'belajar-gradle'.
dependentComponents - Displays the dependent components of components in root project 'belajar-gradle'. [incubating]
help - Displays a help message.
model - Displays the configuration model of root project 'belajar-gradle'. [incubating]
outgoingVariants - Displays the outgoing variants of root project 'belajar-gradle'.
projects - Displays the sub-projects of root project 'belajar-gradle'.
properties - Displays the properties of root project 'belajar-gradle'.
tasks - Displays the tasks runnable from root project 'belajar-gradle'.
Verification tasks
------------------
check - Runs all checks.
test - Runs the unit tests.
Rules
-----
Pattern: clean<TaskName>: Cleans the output files of a task.
Pattern: build<ConfigurationName>: Assembles the artifacts of a configuration.
Pattern: upload<ConfigurationName>: Assembles and uploads the artifacts belonging to a configuration.
To see all tasks and more detail, run gradlew tasks --all
To see more detail about a task, run gradlew help --task <task>
BUILD SUCCESSFUL in 1s
1 actionable task: 1 executed
Ternyata ada banyak sekali task yang sudah disediakan secara default oleh Gradle.
Nah sekarang.. mari kita coba membuat custom task!
Jika kita membuat project di awal menggunakan DSL Groovy, maka task harus dibuat dengan bahasa Groovy. Tapi jika menggunakan Kotlin, maka task harus dibuat dengan Kotlin juga.
Berikut ini adalah format cara membuat task dengan bahasa Groovy:
Oke, sekarang mari kita coba..
Silakan tambahkan kode berikut pada bagian akhir
di file build.gradle
.
tasks.register("hello") {
description = 'Menampilkan pesan hello world'
doLast {
println 'Hello, World!'
}
}
Sehingga menjadi seperti ini:
/*
* This file was generated by the Gradle 'init' task.
*
* This generated file contains a sample Java project to get you started.
* For more details take a look at the Java Quickstart chapter in the Gradle
* User Manual available at https://docs.gradle.org/6.0.1/userguide/tutorial_java_projects.html
*/
plugins {
// Apply the java plugin to add support for Java
id 'java'
// Apply the application plugin to add support for building a CLI application.
id 'application'
}
repositories {
// Use jcenter for resolving dependencies.
// You can declare any Maven/Ivy/file repository here.
jcenter()
}
dependencies {
// This dependency is used by the application.
implementation 'com.google.guava:guava:28.0-jre'
// Use JUnit test framework
testImplementation 'junit:junit:4.12'
}
application {
// Define the main class for the application.
mainClassName = 'belajar.gradle.App'
}
tasks.register("hello") {
description = 'Menampilkan pesan hello world'
doLast {
println 'Hello, World!'
}
}
Setelah itu, coba jalankan lagi perintah:
# Linux dan Mac
./gradlew tasks --all
# Windows
gradlew tasks --all
Maka hasilnya:
Selanjutnya, mari kita coba eksekusi task tersebut. Silakan gunakan perintah berikut:
# Linux dan Mac
./gradlew hello
# Windows
gradlew hello
Maka hasilnya:
Task hello
adalah custom task yang kita buat sendiri.
Ini biasanya akan kita butuhkan saat gradle tidak menyediakan
task yang kita inginkan. Misalnya, task untuk melakukan deploy,
pembuatan peket deb
, exe
, msi
, dll.
Menginstal Library dengan Gradle
Saat proses build dan run, gradle akan otomatis mencari dan menginstal library yang dibutuhkan oleh aplikasi.
Coba perhatikan blok dependencies
pada file build.gradle
.
dependencies {
// This dependency is used by the application.
implementation 'com.google.guava:guava:28.0-jre'
// Use JUnit test framework
testImplementation 'junit:junit:4.12'
}
Di sini lah kita akan menentukan library yang akan digunakan oleh aplikasi.
Sebagai contoh, misalnya saya membutuhkan library GSON.. maka kita bisa tulis seperti ini:
dependencies {
// This dependency is used by the application.
implementation 'com.google.guava:guava:28.0-jre'
implementation 'com.google.code.gson:gson:2.8.6'
// Use JUnit test framework
testImplementation 'junit:junit:4.12'
}
Artinya, saya akan menginstal library gson
dengan versi 2.8.6
.
Dari mana kita tahu nama dan versi library yang akan diinstal?
Ini bisa kita cari dari web penyedia library Java seperti Github, JFog Bintray dan maven central.
Apa Selanjutnya?
Begitulah cara menggunakan gradle untuk proyek Java.
Gampang ‘kan?
Sebenarnya di beberapa IDE sudah terintegrasi dengan Gradle. Contohnya seperti Android Studio dan Intellij. Cara menggunakan Gradle di IDE tentunya lebih mudah, tinggal klik-klik saja..
Karena itu, selanjutnya silakan coba sendiri menggunakan gradle di IDE yang kamu sukai.