Thursday, April 19, 2012

Compile HelloWord.java menggunakan Apache Ant

Ada yang sudah pernah mendengan ant? atau mungkin maven? bwt yang baru pertama kali mendengar nama ini, saya akan sedikit membahas tentang apache ant sebelum kita memulai tutorial singkatnya ok? :D

Apache ant merupakan salah satu tools yang digunakan untuk mengotomatisasi build cycle pada sebuah proyek yang berbasiskan java. Pada dasarnya ketika kita selesai melakukan proses koding pada proyek perangkat lunak maka biasanya kita akan melakukan proses compile-test-package. Nah, dengan adanya bantuan dari apache ant, kita dapat melakukan ketiga proses tersebut secara otomatis dan bahkan bisa di schedule dengan menggunakan cron jobs ataupun tools yang lainnya. Pada kesempatan kali ini saya akan memberikan contoh sederhana tentang bagaimana membuat mengcompile sebuah proyek java dengan menggunakan apache ant.


Ok, sebelum kita mulai tutorialnya, saya akan menjelaskan mengenai skenario dari build process yang akan kita buat pada proyek HelloWorld.java kita. scenarionya seperti ini:
  1. file HelloWorld.java berada di dalam package org.example
  2. semua source code berada di dalam directiory "src"
  3. semua class hasil compile akan di masukkan kedalam direktori "build/classes"
  4. semua file jar dari class yang dibuat akan dimasukkan ke dalam direktori "build/jar"
  5. alur dari build proses yg akan kita buat adalah "compile -> package -> run"
Nah, sekarang hal yang pertama akan kita lakukan adalah membuat file HelloWorld.java di dalam folder "src" dan package "org.example".

package org.example;

public class HelloWorld {
 public static void main(String[] args) {
  System.out.println("Hello World!");
  System.out.println("Hello Ant!");
 }
}

Sekarang struktur direktori yang kita miliki akan seperti gambar di bawah ini:

`-- src
    `-- org
        `-- example
            `-- HelloWorld.java


Berikutnya kita akan membuat satu buah file yang bernama "build.xml". file build.xml ini merupakan file yang berisikan tugas-tugas / task yang harus dijalankan oleh ant. nah, sesuai dengan skenario yang telah kita tentukan di atas, kita akan membuat 3 buah task pada file build.xml ini yaitu: compile, package dan run. perintah "compile" digunakan untuk mengompile seluruh source code, perintah "package" digunakan untuk mengumpulkan seluruh file .class dan menyatukannya dalam file .jar, sedangkan perintah "run" digunakan untuk menjalankan file .jar yang telah dibuat sebelumnya.

Berikut ini adalah isi dari file build.xml yang harus kita buat. Oiya file build.xml diletakkan di atas folder "src" (berada satu level dengan direktori "src") :

<?xml version="1.0" encoding="UTF-8"?>
<project name="HelloProject" default="src" basedir=".">
 <property name="src.dir" value="src" />
 <property name="build.dir" value="build" />
 <property name="build.dir.classes" value="build/classes" />
 <property name="build.dir.jar" value="build/jar" />

 <target name="compile">
  <mkdir dir="${build.dir.classes}" />
  <javac srcdir="${src.dir}" destdir="${build.dir.classes}" />
 </target>

 <target name="package" depends="compile">
  <jar destfile="${build.dir.jar}/HelloWorld.jar" basedir="${build.dir.classes}">
   <manifest>
    <attribute name="Main-Class" value="org.example.HelloWorld" />
   </manifest>
  </jar>
 </target>

 <target name="run" depends="package">
  <java jar="${build.dir.jar}/HelloWorld.jar" fork="true" />
 </target>

 <target name="clean">
  <delete dir="${build.dir}" />
 </target>
</project>

Untuk melakukan proses compile, kita cukup mengetikkan perintah "ant compile" dari dalam direktori yang berisi file build.xml. Jika proses berhasil maka akan keluar message sebagai berikut:

[salman@salmandev ant]$ ant compile
Buildfile: /home/salman/Documents/Riset/ant/build.xml

compile:
    [mkdir] Created dir: /home/salman/Documents/Riset/ant/build/classes
    [javac] /home/salman/Documents/Riset/ant/build.xml:10: warning: 'includeantruntime' was not set, defaulting to build.sysclasspath=last; set to false for repeatable builds
    [javac] Compiling 1 source file to /home/salman/Documents/Riset/ant/build/classes

BUILD SUCCESSFUL
Total time: 0 seconds
[salman@salmandev ant]$

Dan struktur direktori yang kita miliki sekarang akan menjadi seperti ini:

.
|-- build
|   `-- classes
|       `-- org
|           `-- example
|               `-- HelloWorld.class
|-- build.xml
|-- build.xml~
`-- src
    `-- org
        `-- example
            `-- HelloWorld.java

Untuk membuat file jar, kita cukup mengetikkan perintah "ant package". Jika proses berhasil maka struktur direktori kita sekarang akan berubah menjadi seperti ini:

.
|-- build
|   |-- classes
|   |   `-- org
|   |       `-- example
|   |           `-- HelloWorld.class
|   `-- jar
|       `-- HelloWorld.jar
|-- build.xml
|-- build.xml~
`-- src
    `-- org
        `-- example
            `-- HelloWorld.java

Terakhir, untuk bisa menjalankan file HelloWorld.jar yang kita buat, kita cukup mengetikkan perintah "ant run". Jika proses eksekusi berhasil maka pesan yang kita terima adalah sebagai berikut:

Buildfile: /home/salman/Documents/Riset/ant/build.xml

compile:
    [javac] /home/salman/Documents/Riset/ant/build.xml:10: warning: 'includeantruntime' was not set, defaulting to build.sysclasspath=last; set to false for repeatable builds

package:

run:
     [java] Hello World!
     [java] Hello Ant!

BUILD SUCCESSFUL
Total time: 1 second

Ok! Sekian dulu tutorial kali ini. semoga bermanfaat dan selamat mencoba :D
Jangan segan-segan untuk memberikan komentar apabila ada yang ingin ditanyakan atau didiskusikan.

No comments:

Post a Comment