Monday, October 18, 2010

Apache ant

Pada saat membaca tutorial dari pak endy (artivisi) saya menemukan statement dari pak endy yaitu "Ant adalah perangkat yang wajib dikuasai oleh programmer Java." maka saya searching di google dan menemukan langsung websitenya.Dan saya juga menemukan artikel bagus di http://bambangpdp.wordpress.com/2009/09/29/apache-ant-memahami-fungsi-dan-dasar-penggunaan-build-tool/#comment-87

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
Tulisan ini tidak untuk membandingkan berbagai build tools yang tersedia, tetapi lebih ke arah bagaimana memahami posisi Ant dan bagaimana kita bisa menggunakan Ant untuk keperluan mempermudah membangun software.
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 ), maka pembahasan ini bersifat cross platform.
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:
[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]$
Asumsi:
  • JDK telah terinstall dan JAVA_HOME telah di-set.
  • Ant akan diinstall di direktori $HOME/software/
Berikut adalah langkahnya:
  1. $ cd software
  2. $ tar -xjvf apache-ant-1.7.1-bin.tar.bz2
Hasilnya:
[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, setting konfigurasi environment variable di $HOME/.bashrc sebagai berikut:
export ANT_HOME=/home/bpdp/software/apache-ant-1.7.1/
export PATH=$PATH:$ANT_HOME/bin
Setelah itu setiap kali login, shell sudah mengenali ant yang telah kita install. Jika telah terinstall dengan benar, hasil instalasi adalah sebagai berikut:
[bpdp@bpdp-arch software]$ ant -version
Apache Ant version 1.7.1 compiled on June 27 2008
[bpdp@bpdp-arch software]$
Jika ingin mengetahui lebih lengkap lagi, gunakan parameter -diagnostics.
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:
[bpdp@bpdp-arch software]$ ant
Buildfile: build.xml does not exist!
Build failed
[bpdp@bpdp-arch software]$
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:
Struktur Direktori dan File
.
|-- build
|   `-- classes
`-- src
    `-- simpleant
        `-- HelloWorld.java
Catatan: Direktori simpleant ada di bawah src dan file HelloWorld.java ada di dalam direktori simpleant.
Asumsi: hasil kompilasi akan diletakkan di direktori build/classes.
Tanpa Apache Ant – Shell
$ javac -sourcepath src -d build/classes/ src/simpleant/HelloWorld.java
$ java -cp build/classes simpleant.HelloWorld
Hello World
$
Tanpa Apache Ant – jar
Untuk keperluan ini anda harus membuat file manifest terlebih dahulu (misalnya helloworld-manifest).
$ 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
$
Menggunakan Apache Ant
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 . Rinciannya adalah sebagai berikut:
  1. Project () digunakan untuk mendefinisikan proyek build.
  2. 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.
  3. Task (misalnya , ), yaitu tugas tertentu yang akan dikerjakan oleh Ant dan biasanya merupakan suatu bagian dari Target untuk memungkinkan target tersebut tercapai.
  4. Properties (), yaitu pasangan nama dan nilai dari nama tersebut. Biasanya digunakan seperti halnya variabel. Lihat penggunaannya pada pembahasan di bawah.
File build.xml yang Fleksibel
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:
[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]$
Kemana Setelah Ini?
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: