Belajar Menggunakan Maven pada Aplikasi Java

Maven adalah salah satu build tool yang sering digunakan dalam proyek aplikasi Java.

Dengan Maven kita bisa:

  1. Kompilasi source code dengan mudah;
  2. Melakukan Testing;
  3. Menginstal library yang dibutuhkan;

Selain digunakan untuk Java, Maven juga dapat digunakan untuk mengelola project dengan bahasa Kotlin, C#, Ruby, Scala, dan sebagainya.

Maven adalah program berbasis teks yang digunakan pada command line. Namun, bisa juga digunakan dalam IDE.

Karena sebagian besar IDE Java seperti Intellij, Eclipse, dan Netbeans sudah mendukungnya.

Pada kesempatan ini, kita akan belajar cara menggunakan Maven pada proyek Java sampai bisa:

  1. Mengelola proyek dengan Maven;
  2. Melakukan build atau kompilasi;
  3. Menginstal Library yang dibutuhkan;
  4. Melakukan Testing.

Mari kita mulai…

Instalasi Maven di Linux

Untuk dapat menggunakan Maven, kita harus menginstalnya terlebih dahulu.

Ketik perintah berikut untuk menginstal Maven di Linux:

sudo apt install maven

Setelah itu, coba periksa versi Maven yang terinstal dengan perintah mvn -version.

Versi Maven yang terinstall

Instalasi Maven pada sistem operasi yang lain, silahkan cek di sini: https://maven.apache.org/install.html

Membuat Project Java dengan Maven

Ada dua cara yang bisa kita lakukan untuk membuat proyek Java dengan Maven:

  1. Menggunakan Command Line atau Terminal;
  2. Menggunakan IDE seperti Netbeans, Eclipse, dan Intellij.

Mari kita coba menggunakan Terminal.

Perintahnya seperti ini:

mvn archetype:generate \
-DgroupId=com.petanikode.app \
-DartifactId=petanikode-app \
-DarchetypeArtifactId=maven-archetype-quickstart \
-DinteractiveMode=false

Keterangan:

  • Argumen archetype:generate artinya kita akan membuat sebuah archetype;
  • Argumen -DgroupId=com.petanikode.app adalah namespace atau nama package dari aplikasi;
  • Argumen -DartifactId=petanikode-app adalah nama direktori dari aplikasi;
  • Argumen -DarchetypeArtifactId=maven-archetype-quickstart artifact atau template yang akan digunakan;
  • Arugmen -DinteractiveMode=false untuk mematikan mode iteraktif.

Tekan Enter, maka project akan segera dibuat.

Membuat project dengan Maven

Setelah itu, coba masuk ke direktori petanikode-app kemudian lihat struktur direktorinya.

Struktur Direktori project Maven

Ini adalah struktur standar direktori project Maven, nanti kita akan bahas lebih dalam.

Berikutnya, kita coba membuat project Maven dengan IDE.

IDE yang akan digunakan adalah Netbeans. Untuk IDE yang lain, silahkan disesuaikan saja. Karena caranya hampir sama.

Silahkan buka Netbeans, lalu klik New Project.

Membuat Project Maven di Netbeans

Pada jendela yang muncul, pilih: Maven->Java Application.

Membuat Project Maven di Netbeans

Berikutnya, isi nama project-nya dengan BelajarMaven.

Membuat Project Maven di Netbeans

Maka hasilnya:

Project Maven di Netbeans

Tidak ada file Java, karena kita tidak menggunakan DarchetypeArtifactId seperti pada command line.

Apa bedanya yang menggunakan DarchetypeArtifactId dengan yang tidak?

Menggunakan DarchetypeArtifactId artinya, kita akan menggunakan template yang sudah ada. Sedangkan yang tidak, berarti kita akan membuat project kosong.

Pada Netbeans, jika ingin menggunakan DarchetypeArtifactId, kita bisa memilih Project From Archetype.

Project Maven di Netbeans

Lalu memilih archetype atau template yang ingin digunakan.

Project Maven di Netbeans

Ada banyak archetype yang bisa dipilih. Silahkan pilih sesuai kebutuhan.

Struktur Direktori Project Maven

Berikut ini struktur direktori standar yang akan dibuatkan oleh Maven:

Struktur Direktori Project Maven

Terdapat beberapa file dan direktori yang harus dipahami. Berikut ini penjelasannya:

Nama File atau Direktori Keterangan
project home berisi file pom.xml dan semua direktori
src/main/java berisi kode program
src/main/resources berisi file pendukung untuk project seperti gambar, dokumen, dll.
src/test/java berisi kode program untuk melakukan testing
src/test/resources berisi file pendukung untuk melakukan testing
target berisi file hasil kompilasi seperti .jar dan .class
pom.xml berisi konfigurasi project

Mengenal file pom.xml

POM adalah singkatan dari Project Object Model.

File pom.xml merupakan file XML yang berisi konfigurasi dari project.

Contoh:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>com.petanikode.app</groupId>
  <artifactId>petanikode-app</artifactId>
  <packaging>jar</packaging>
  <version>1.0-SNAPSHOT</version>
  <name>petanikode-app</name>
  <url>http://maven.apache.org</url>
  <dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>3.8.1</version>
      <scope>test</scope>
    </dependency>
  </dependencies>
</project>

Bagian penting yang harus kita pahami adalah di bagian <depedencies>.

Bagian ini tempat kita menentukan library apa yang akan kita gunakan dalam project.

Contohnya: di sini sudah ada library junit untuk melakukan unit testing.

<dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>3.8.1</version>
      <scope>test</scope>
    </dependency>
  </dependencies>

Nanti kita akan coba menambahkan library lain.

Kompilasi Program dengan Maven

Kita dapat melakukan kompilasi aplikasi dengan perintah:

mvn package

Perintah ini akan membuat direktori baru beranama target yang berisi file hasil kompilasi berupa .jar dan .class.

Kompilasi project Maven

Selanjutnya kita bisa ekesekusi programnya dengan perintah berikut:

mvn exec:java -Dexec.mainClass=com.petanikode.app.App

atau

java -cp target/petanikode-app-1.0-SNAPSHOT.jar com.petanikode.app.App

Parameter -cp (class path) untuk menentukan lokasi class program yang akan dieksekusi.

Eksekusi Program

Cukup mudah bukan…?

Berikutnya kita coba menghapus hasil kompilasi dengan perintah:

mvn clean

Selain perintah ini, ada beberapa peritnah dasar yang perlu diingat:

  • mvn package untuk kompilasi aplikasi;
  • mvn clean untuk menghapus hasil kompilasi;
  • mvn install untuk menginstall library yang dibutuhkan;
  • mvn test utnuk menjalankan testing;

Bila kita menggunakan Netbeans, perintah tersebut bisa diakses dengan klik kanan pada project lalu tinggal pilih.

Perintah maven netbeans

Menginstall Library dengan Maven

Ada banyak library di luar sana yang bisa kita gunakan untuk membuat aplikasi.

Biasanya kita download file .jar, lalu diimpor ke dalam Project.

Tapi, bila menggunakan Maven, kita tidak perlu melakukan itu. Karena kita akan menyuruh Maven untuk mendownload dan mengimpor langsung ke Project.

Caranya bagaimana?

Caranya: kita tinggal tambahkan saja deklarasi depedency library yang dibutuhkan.

Silahkan buka https://mvnrepository.com/ untuk mencari library yang ingin diinstal.

Misalkan kita membutuhkan library untuk JSON.

Repository Maven

Mari kita coba install GSON, silahkan buka: https://mvnrepository.com/artifact/com.google.code.gson/gson/2.8.2

Kemudian copy kode depedency untuk Maven.

Library GSON di Repository Maven

Paste di file pom.xml seperti ini:

Library GSON di file pom.xml

Jangan lupa disimpan.

Selanjutnya kita akan buka terminal dari Netbeans untuk menjalankan perintah mvn install.

Klik Tools->Open in Terminal.

Membuka Terminal di Netbeans

Ketik perintah mvn install untuk menginstall library GSON.

Install Library GSON melalui Maven

Hasilnya, file .jar dari GSON akan ter-download dan kita bisa impor class GSON dari kode project. Karena sudah langsung terintegrasi.

Install Library GSON melalui Maven

Semua library (.jar) yang diinstal dengan Maven, akan tersimpan dalam direktori /home/username/.m2. Bukan di dalam project.

Jika ada project lain yang membutuhkan, maka tinggal mengambil saja dari sana tanpa harus men-download.

Melakukan Testing

Tes akan kita lakukan dengan junit, karena sudah terinstal di sana.

Pertam-tama, kita ubah dulu kode dari App.java menjadi seperti ini:

package com.petanikode.app;

/**
 * Hello world!
 *
 */
public class App {

    public static void main(String[] args) {
        System.out.println(getHelloWorld());
    }

    public static String getHelloWorld() {
        return "Hello World";
    }
}

Di sana terdapat method getHelloWorld() yang akan kita tes.

Berikutnya kita akan menulis kode test-nya. Silahkan buka file AppTest.java.

Lalu tambahkan kode:

assertEquals(App.getHelloWorld(), "Hello World");

di dalam method testApp().

Kode untuk testing

assertEquals() adalah method untuk melakukan testing yang membandingkan persamaan.

Kita akan tes: apakah fungsi getHelloWorld() benar menghasilkan String "Hello World" atau tidak?

Silahkan ketik perintah:

mvn test

untuk melakukan testing.

Ini hasilnya jika testing berhasil:

testing berhasil

Sedangkan kalau gagal:

testing gagal

Kenapa bisa gagal?

Karena saya mengubah "Hello World" menjadi "Hello Petani" di method getHelloWorld().

Akhir Kata…

Maven dapat digunakan dengan command line dan IDE.

Kamu lebih suka pakai yang mana?

Saya yakin banyak yang akan menjawab IDE, karena lebih mudah. Namun, kita juga perlu tahu cara menggunakannya di command line untuk melakukan tugas yang tidak bisa dilakukan di IDE.

Selamat belajar Maven.

Referensi: