30 November 2008

Ant – Otomatisasi Development Java

Dalam pemrograman java, kita mengenal ANT (Another Neat Tool). Ant adalah sebuah tool dalam pemrograman java dimana masalah compile, deploy dan packaging, menjadi serba otomatis. Ant dikenal dengan istilah “easy-to-use XML based syntax”. Seperti java, ant juga dapat berjalan cross-platform. Dalam ant kita juga mengenal suatu file yang bernama build.xml. File inilah yang menjadi sentral dari semua otomatisasi development java.

Pada prakteknya, ant dipakai oleh para developer java sebagai alat untuk compile, packaging, dan deployment pasca pembuatan source code selesai. Untuk menggunakan ant anda dapat mendownloadnya di sini.

Kali ini kita akan membahas penggunaan ant sebagai sebuah tool untuk mengotomatisasi development java pasca source code selesai dibuat. Mari kita lihat sebuah contoh sederhana dari sebuah build.xml yang dapat di eksekusi oleh ant.


<project name="Blog" default="compile" >
<target name="prepare">
<mkdir dir="G:\Pribadi\MyProgramming\Java\JavaProject\Blog\output"/>
</target>
<target name="compile" depends="prepared">
<javac srcdir="G:\Pribadi\MyProgramming\Java\JavaProject\Blog\src"
destdir="G:\Pribadi\MyProgramming\Java\JavaProject\Blog\output"/>
</target>
</project>

Diatas adalah sebuah contoh sederhana dari sebuah file build.xml. Dari baris-baris tsb kita dapat melihat ada dua task yang bisa di panggil oleh ant yaitu : prepare dan compile. Pada task prepare kita melihat ada sebuah direktori yang harus dibuat disana dengan perintah mkdir, dimana direktori tsb harus terletak pada path G:\Pribadi\MyProgramming\Java\JavaProject\Blog dan direktori tsb bernama output. Sementara pada task compile, kita bisa melihat bahwa task ini bergantung pada task sebelumnya yaitu task “prepare”, artinya jika task prepare gagal di eksekusi maka task compile pun tidak akan dieksekusi oleh ant itu sendiri. Dalam task compile, kita juga dapat melihat bahwa fungsi utama dari task tsb adalah mengkompilasi semua source code yang ada pada direktori G:\Pribadi\MyProgramming\Java\JavaProject\Blog\src.

Ant juga mengenal property. Dalam file build.xml property dinotasikan dengan syntax property. Property digunakan dalam file build.xml, sebagai pengganti suatu nilai yang terlalu panjang, seperti misalnya nama direktori. Jika bari-baris dalam contoh diatas untuk direktorinya kita ganti dengan menggunakan property maka file build.xml di atas menjadi seperti berikut ini:

<project name="Blog" default="compile" basedir=".">
<!--Define Params-->
<property name="src" value="${basedir}/src"/>
<property name="output" value="${basedir}/output"/>

<target name="prepare">
<mkdir dir="${output}"/>
</target>

<target name="compile" depends="prepare">
<javac srcdir="${src}" destdir="${output}"/>
</target>

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

Dalam baris-baris contoh diatas kita bisa melihat bahwa, direktori kita bisa sederhanakan dengan menambahkan baris property, dan kemudian pada task prepare dan task compile, kita memanggil property tsb menjadi sebuah variabel direktori. Dalam baris tersebut kita juga menambahkan satu task yang bisa di eksekusi yaitu task clean berguna untuk menghapus direktori-direktori tertentu.

Dalam mendistribusikan sebuah aplikasi yang kita buat dengan bahasa pemrograman java, sangat dianjurkan untuk mem-packing aplikasi kita dalam bentuk jar file, apalagi jika program yang kita buat dengan java terdiri dari begitu banyak kelas. Dengan Jar file, file-file class hasil dari kompilasi java yang banyak tadi dapat lebih mudah kita pelihara, karena hanya berisi satu file jar saja Jar file sebenranya adalah file arsip java, namun kelas-kelas didalamnya dapat di eksekusi meskipun terbungkus dalam sebuah arsip. Ketika kita mengeksekusi sebuah jar file yang berisi begitu banyak kelas, kita harus membuat sebuah informasi dalam jar file tsb. Informasi tsb berisi kelas utama atau main class yang harus di eksekusi ketika jar file dipanggil. Informasi tsb diletakkan dalam sebuah file bernama manifest.mf yang diletakkan dalam folder META-INF. Dalam file manifest ini juga dituliskan informasi-informasi dependensi program kita terhadap library-library yang digunakan.

Perhatikan baris-baris syntax build.xml,dibawah ini:

<project name="Blog" default="compile" basedir=".">
<!--Define Params-->
<property name="src" value="${basedir}/src"/>
<property name="output" value="${basedir}/output"/>
<property name="lib" value="${basedir}/lib"/>
<property name="dist" value="${basedir}/dist"/>

<target name="prepare">
<mkdir dir="${output}"/>
</target>

<target name="make_jar” depends="compile”>
<jar jarfile="${dist}/test_blog.jar">
<fileset dir="${build}">
<include name="**"/>
</fileset>
<manifest>
<attribute name="Class-Path" value="lib/log4j-1.2.8.jar lib/commons-httpclient-2.0-rc2.jar lib/jodd.jar ."/>
</manifest>
</jar>
</target>

<target name="compile" depends="prepare">
<javac srcdir="${src}" destdir="${output}">
<classpath>
<pathelement location="${lib}/ log4j-1.2.8.jar "/>
<pathelement location="${lib}/commons-httpclient-2.0-rc2.jar"/>
<pathelement location="${lib}/jodd.jar"/>
</classpath>
</javac>
</target>

<target name="clean">
<delete dir="${output}"/>
<delete dir="${dist}"/>
</target>
</project>

Pada baris diatas dapat kita lihat, ada beberapa hal yang kita tambahkan. Penambahan pertama kita lakukan pada baris property, dimana kita menambah suatu property baru yang mewakili direktori lib. Penambahan selanjutnya ada pada task compile. Penambahan yang kita lakukan pada baris ini dilakukan apabila dalam source-code aplikasi java yang kita buat kita juga menggunakan library-library lain. Penambahan baris pada task compile berguna untuk menambahkan classpath library-library tsb, ketika kompilasi source code program dijalankan pada task compile tsb.

Pada baris tsb kita juga menambahkan suatu task baru yaitu task make_jar, fungsi dari task ini adalah membuat sebuah file arsip java yang bernama test_blog.jar. Dimana isi dari jar file ini adalah semua file hasil kompilasi . Isi dari jar file ini ditandai dalam blok fileset pada task make_jar. Bisa saja kita membatasi isi dari file-file kelas yang akan masuk dalam file jar tsb, hanya tinggal mengganti nilai dari tag include name diatas dan kita isi dengan file yang kita perlukan saja. Catatan: tag include name ini boleh lebih dari satu namun harus tetap ada dalam blok fileset.

Kemudian kita juga bisa lihat dalam task make_jar tsb, ditambahkan tag manifest, tag inilah yang akan menuliskan informasi dalam jar file. Semua informasi tersebut nantinya akan di tulis dalam sebuah file bernama manifest.mf yang diletakkan dalam folder META-INF dalam file jar yang yang dihasilkan.

Demikianlah sedikit pembahasan syntax-sytax dalam suatu file build.xml yang dapat dieksekusi oleh Antoher Neat Tool (Ant), masih banyak lagi tag-tag yang bisa digunakan, silahkan anda mencoba sendiri, dengan berpandu pada API-API yang memang sudah disediakan oleh ant itu sendiri.

Semoga bermanfaat.


Menteng, Nov 30, 2008

josescalia 

No comments: