author

Apa itu Gradle dan Bagaimana Cara Menggunakannya di Java?


Tutorial Gradle untuk Pemula

Setelah belajar dasar Java, bisa nggak kita lanjut belajar android?

Bisa-bisa saja.

Tapi tinggu dulu!

Ada sebuah tool yang harus kamu ketahui.

Yaitu:

Gradle Meme

Banyak yang salah saat baru mulai belajar pemrograman Android.

Berbekal pengetahuian 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 kegunaanya 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..

Bagaiman 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:

  1. Melalui SDKman
  2. Melalui Paket Zip
  3. 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.

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

Instalasi Gradle melalui SDK Manager

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 mendownload file binary-nya.

Silahkan 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 environtment 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.

Install gradle di Ubuntu dengan 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:

Versi Gradle yang terinstall

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.

  1. Melalui command line,
  2. Melalui IDE seperti Netbeans, Intellij, dll.

Kita akan coba dulu melalui Command Line.

Baiklah, silahkan 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.

Silahkan pilih:

  1. Jenis Proyek pilih 2: Application
  2. Bahasa pilih 3: Java
  3. DSL pilih 1: Groovy
  4. Test Framework pilih 1: JUnit 4

Untuk nama proyek dan source package, dikosongkan saja.

Kalau belum jelas, silahkan ikuti ini:

Membuat proyek Java dengan gradle

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:

Struktur proyek Java dengan Gradle

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 disetiap 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 gradlenya dengan mengetik:

# Linux dan mac
./gradlew

# windows
gradlew

Hasilnya:

Gradle mendownload gradle wrapper

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.

Silahkan ketik perintah berikut untuk build.

# Linux dan mac
./gradlew build

# windows
gradlew build

Tunggu sampai prosesnya selesai.

Build aplikasi dengan gradle

Maka hasilnya akan ada folder baru dengan nama build.

Folder hasil build gradle

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:

Run aplikasi dengan gradle

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:

Daftar task di Gradle

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:

Membuat task untuk gradle

Oke, sekarang mari kita coba..

Silahkan tambahkan kode berikut pada bagian akhir di file build.gradle.

tasks.register("hello") {
    description = 'Menampilkan pesan hello world'
    doLast { 
        println 'Hello, World!'
    }
}
Sehingga menjadi sepert 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:

Membuat task hello untuk gradle

Selanjutnya, mari kita coba eksekusi task tersebut. Silahkan gunakan perintah berikut:

# Linux dan Mac
./gradlew hello

# Windows
gradlew hello

Maka hasilnya:

Menjalankan task hello

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 proeses build dan run, gradle akan otomatis mencari dan menginstal library yang dibutuhkan oleh aplikasi.

Coba perhatikan blok depedencies 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 silahkan coba sendiri menggunakan gradle di IDE yang kamu sukai.