silahkan dibaca...
Tentang Apache Ant dan Build Tool
Apache Ant adalah software berbasis Java yang digunakan untuk keperluan build tool. Sebagai build tool, tugas utama dari Ant adalah untuk menyediakan sumber daya dan melaksanakan proses yang memungkinkan membangun suatu software dari bentuk source code menjadi aplikasi yang siap didistribusikan atau bahkan telah diinstall pada remote server. Meskipun definisi tersebut kelihatannya sederhana, kita akan melihat bahwa Ant mempunyai banyak sekali tasks yang bisa digunakan untuk berbagai keperluan sesuai dengan tujuan utama dari build tool. Ada banyak build tool yang tersedia, beberapa diantaranya adalah build tool yang bersifat spesifik untuk sistem operasi tertentu. Beberapa contoh dari build tool, diantaranya adalah:
- GNU Make (ingat siklus ./configure, make, make install)
- Jam
- rake (untuk Ruby), dan lain-lain
Ant merupakan software untuk keperluan build tool yang bersifat cross platform, bisa digunakan pada berbagai sistem operasi yang mendukung Java. Meskipun demikian, pembahasan dalam tulisan ini akan menggunakan Linux. Jika anda menggunakan Windows, silahkan sesuaikan dengan sistem operasi anda (hanya jika diperlukan). Selama tidak menggunakan fitur spesifik dari sistem operasi yang bersangkutan (diantaranya dengan tag
Mengapa Harus Menggunakan Build Tool?
Build tool tidak diperlukan jika software yang akan kita bangun sangat sederhana (seperti misalnya hanya menampilkan satu atau beberapa baris tulisan) dan kita tidak keberatan untuk menuliskan dan mencantumkan berbagai dependencies dari software tersebut (misalnya berbagai file jar yang kita perlukan). Jika aplikasi yang kita bangun relatif kompleks, melibatkan banyak dependencies, dengan struktur direktori tertentu, serta memerlukan banyak eksekusi atau menjalankan tools (misalnya jar, rmic, javac, bzip2, dan lain-lain), maka kita memerlukan build tool untuk meng-”otomatiskan” proses membangun (compile, test, run, deploy) software tersebut. Anda bisa membayangkan sendiri jika harus mengetikkan berpuluh-puluh baris untuk siklus compile, test, run, deploy jika tidak menggunakan build tool.
Instalasi Apache Ant
Ant adalah software bebas dan mempunyai lisensi ASF (Apache Software Foundation). Ant bisa diperoleh di http://ant.apache.org. Versi terakhir saat tulisan ini dibuat adalah versi 1.7.1. Download distribusi Ant seperti berikut ini:
Asumsi:[bpdp@bpdp-arch ant]$ ls -la total 7484 drwxr-xr-x 2 bpdp users 4096 2009-09-01 03:08 . drwxr-xr-x 26 bpdp users 4096 2009-09-19 17:37 .. -rw-r--r-- 1 bpdp users 7641928 2008-07-09 16:19 apache-ant-1.7.1-bin.tar.bz2 [bpdp@bpdp-arch ant]$
- JDK telah terinstall dan JAVA_HOME telah di-set.
- Ant akan diinstall di direktori $HOME/software/
- $ cd software
- $ tar -xjvf apache-ant-1.7.1-bin.tar.bz2
Setelah itu, setting konfigurasi environment variable di $HOME/.bashrc sebagai berikut:[bpdp@bpdp-arch software]$ pwd /home/bpdp/software [bpdp@bpdp-arch software]$ ls -la apache-ant-1.7.1/ total 276 drwxr-xr-x 6 bpdp users 4096 2008-06-27 12:04 . drwxr-xr-x 25 bpdp users 4096 2009-09-28 10:05 .. -rw-r--r-- 1 bpdp users 126 2008-06-27 12:04 INSTALL -rw-r--r-- 1 bpdp users 51380 2008-06-27 12:04 KEYS -rw-r--r-- 1 bpdp users 15289 2008-06-27 12:04 LICENSE -rw-r--r-- 1 bpdp users 1270 2008-06-27 12:04 NOTICE -rw-r--r-- 1 bpdp users 4119 2008-06-27 12:04 README -rw-r--r-- 1 bpdp users 146814 2008-06-27 12:04 WHATSNEW drwxr-xr-x 2 bpdp users 4096 2009-09-04 10:23 bin drwxr-xr-x 9 bpdp users 4096 2009-09-04 10:23 docs drwxr-xr-x 3 bpdp users 4096 2009-09-04 10:23 etc -rw-r--r-- 1 bpdp users 7160 2008-06-27 12:04 fetch.xml -rw-r--r-- 1 bpdp users 4445 2008-06-27 12:04 get-m2.xml drwxr-xr-x 2 bpdp users 4096 2009-09-04 10:23 lib [bpdp@bpdp-arch software]$
Setelah itu setiap kali login, shell sudah mengenali ant yang telah kita install. Jika telah terinstall dengan benar, hasil instalasi adalah sebagai berikut:export ANT_HOME=/home/bpdp/software/apache-ant-1.7.1/ export PATH=$PATH:$ANT_HOME/bin
Jika ingin mengetahui lebih lengkap lagi, gunakan parameter -diagnostics.[bpdp@bpdp-arch software]$ ant -version Apache Ant version 1.7.1 compiled on June 27 2008 [bpdp@bpdp-arch software]$
Ant dan build.xml
Pada saat dijalankan, Ant akan mencari file build.xml pada direktori yang aktif. Jika tidak menemukan, Ant akana menampilkan pesan kesalahan berikut:
File build.xml merupakan file XML yang digunakan untuk mendeskripsikan proyek build yang akan dikerjakan oleh Ant. Contoh sederhana untuk mengkompilasi dan menjalankan program Java yang akan menampilkan string “Hello World” adalah sebagai berikut:[bpdp@bpdp-arch software]$ ant Buildfile: build.xml does not exist! Build failed [bpdp@bpdp-arch software]$
Struktur Direktori dan File
Catatan: Direktori simpleant ada di bawah src dan file HelloWorld.java ada di dalam direktori simpleant.. |-- build | `-- classes `-- src `-- simpleant `-- HelloWorld.java
Asumsi: hasil kompilasi akan diletakkan di direktori build/classes.
Tanpa Apache Ant – Shell
Tanpa Apache Ant – jar$ javac -sourcepath src -d build/classes/ src/simpleant/HelloWorld.java $ java -cp build/classes simpleant.HelloWorld Hello World $
Untuk keperluan ini anda harus membuat file manifest terlebih dahulu (misalnya helloworld-manifest).
Menggunakan Apache Ant$ cat helloworld-manifest Main-Class: simpleant.HelloWorld $ mkdir build/jar $ jar cfm build/jar/HelloWorld.jar helloworld-manifest -C build/classes/ . $ java -jar build/jar/HelloWorld.jar Hello World $
build.xml
Eksekusi ant dengan berbagai parameter adalah sebagai berikut:
[bpdp@bpdp-arch helloworld-with-ant]$ ant compile Buildfile: build.xml compile: [mkdir] Created dir: /home/bpdp/kerjaan/src/java/helloworld-with-ant/build/classes [javac] Compiling 1 source file to /home/bpdp/kerjaan/src/java/helloworld-with-ant/build/classes BUILD SUCCESSFUL Total time: 1 second [bpdp@bpdp-arch helloworld-with-ant]$ ant jar Buildfile: build.xml jar: [mkdir] Created dir: /home/bpdp/kerjaan/src/java/helloworld-with-ant/build/jar [jar] Building jar: /home/bpdp/kerjaan/src/java/helloworld-with-ant/build/jar/HelloWorld.jar BUILD SUCCESSFUL Total time: 0 seconds [bpdp@bpdp-arch helloworld-with-ant]$ ant run Buildfile: build.xml run: [java] Hello World BUILD SUCCESSFUL Total time: 0 seconds [bpdp@bpdp-arch helloworld-with-ant]$ tree . . |-- build | |-- classes | | `-- simpleant | | `-- HelloWorld.class | `-- jar | `-- HelloWorld.jar |-- build.xml `-- src `-- simpleant `-- HelloWorld.java 6 directories, 4 files [bpdp@bpdp-arch helloworld-with-ant]$ ant clean Buildfile: build.xml clean: [delete] Deleting directory /home/bpdp/kerjaan/src/java/helloworld-with-ant/build BUILD SUCCESSFUL Total time: 0 seconds [bpdp@bpdp-arch helloworld-with-ant]$ tree . |-- build.xml `-- src `-- simpleant `-- HelloWorld.java 2 directories, 2 files [bpdp@bpdp-arch helloworld-with-ant]$Catatan: tree adalah perintah spesifik di Linux dan berfungsi untuk melihat struktur direktori dan file.
Lebih Lanjut dengan build.xml
Suatu file build.xml pada dasarnya mempunyai beberapa bagian inti yang terangkum di dalam tag
- Project (
) digunakan untuk mendefinisikan proyek build. - Target (
), yaitu tujuan yang bisa dipanggil sebagai parameter dari Ant. Pada contoh build.xml diatas, terdapat target compile, run, dan clean. Pada target ini, didefinisikan task serta definisi-definisi lain untuk memastikan tercapainya target tersebut. - Task (misalnya
, ), yaitu tugas tertentu yang akan dikerjakan oleh Ant dan biasanya merupakan suatu bagian dari Target untuk memungkinkan target tersebut tercapai. - Properties (
), yaitu pasangan nama dan nilai dari nama tersebut. Biasanya digunakan seperti halnya variabel. Lihat penggunaannya pada pembahasan di bawah.
File build.xml yang kita buat di atas adalah file yang menyebutkan lokasi file di seluruh badan file XML (hardcoded). Sebenarnya variabel-variabel seperti itu bisa kita atur menggunakan property dan setiap property yang didefinisikan bisa diakses menggunakan format ${namaproperty}. Berikut ini adalah hasil akhir dari file build.xml:
build.xml
Berikut adalah hasil dari perubahan file build.xml tersebut:
Kemana Setelah Ini?[bpdp@bpdp-arch helloworld-with-ant]$ ant clean Buildfile: build.xml clean: [delete] Deleting directory /home/bpdp/kerjaan/src/java/helloworld-with-ant/build BUILD SUCCESSFUL Total time: 0 seconds [bpdp@bpdp-arch helloworld-with-ant]$ ant run Buildfile: build.xml compile: [mkdir] Created dir: /home/bpdp/kerjaan/src/java/helloworld-with-ant/build/classes [javac] Compiling 1 source file to /home/bpdp/kerjaan/src/java/helloworld-with-ant/build/classes jar: [mkdir] Created dir: /home/bpdp/kerjaan/src/java/helloworld-with-ant/build/jar [jar] Building jar: /home/bpdp/kerjaan/src/java/helloworld-with-ant/build/jar/HelloWorld.jar run: [java] Hello World BUILD SUCCESSFUL Total time: 1 second [bpdp@bpdp-arch helloworld-with-ant]$
Secara minimal, setidaknya pemrogram yang akan menggunakan Ant harus memahami masalah target, task, dan properties. Silahkan membuka manual yang merinci hal-hal tersebut. Banyak task telah disediakan. Untuk keperluan umum, biasanya telah tersedia task tertentu, misalnya untuk membuat dan mendeploy file .WAR. Cari pada manual Ant. Jika tidak ada, kemungkinan sudah ada pihak ketiga yang membuat task tersebut dan bisa diperoleh di Internet. Jika tidak, maka anda harus membuat sendiri task (jika perlu). Pengalaman penulis, task yang disediakan oleh Ant sudah cukup untuk keperluan development sehari-hari.
Penutup
Sumber utama dari tulisan ini diambil dari manual Apache Ant, bisa diakses di http://ant.apache.org/manual/ serta dari berbagai sumber lain dan pengalaman penulis sendiri. Indentasi pada tulisan ini tidak begitu bagus karena keterbatasan dari fasilitas. Silahkan disesuaikan sendiri.
No comments:
Post a Comment