08 Sep 2008
Pada posting sebelumnya, saya telah membahas tentang cara instalasi Ivy, dan juga sedikit pengantar tentang apa itu Ivy.
Ivy adalah dependency management tools. Dia mampu menangani dependensi antar modul dalam aplikasi. Tentunya penjelasan ini sangat abstrak. Baiklah mari kita lihat problem apa yang kita hadapi dalam membuat aplikasi, dan bagaimana Ivy menyelesaikan problem tersebut.
Peringatan : Bukan untuk pemula !!!
Rangkaian artikel ini diperuntukkan untuk Senior Developer, Team Leader, atau Architect.
Saya asumsikan pembaca sudah mahir menggunakan Ant, Linux, dan memiliki bandwidth yang besar.
Studi Kasus
Untuk contoh kasus, mari kita buat aplikasi sederhana dengan Spring MVC 2.5. Aplikasi ini bisa didonlod di sini.
Aplikasi sederhana ini terdiri dari 3 bagian utama, yaitu:
Hubungan dependensi antara ketiga bagian ini dapat digambarkan sebagai berikut:

Tanda panah dibaca sebagai “tergantung kepada”. Contohnya, modul DAO tergantung kepada modul Domain Model, sehingga untuk mengkompilasi modul DAO, kita harus punya modul Domain Model. Sebaliknya, untuk mengkompilasi modul Domain Model, kita tidak butuh modul DAO.
Dependensi, Pembagian Tim, dan Penjadwalan
Ketergantungan antar modul ini perlu dipertimbangkan dengan seksama, karena dari desain ketergantungan ini, kita dapat menentukan pembagian tim yang efisien. Idealnya masing-masing tim development dapat bekerja secara paralel dan tidak saling menunggu tim lain selesai.
Dengan skema dependensi seperti di atas, pembagian tugas antar tim kita tidak efisien, karena tim DAO harus menunggu tim DM selesai, baru dia dapat mulai. Demikian juga, tim UI harus menunggu tim DM dan juga tim DAO selesai, baru dia dapat mulai. Ini dapat dilihat di project schedule berikut.

Dengan schedule seperti ini, kita membutuhkan 11 minggu untuk development, karena modul UI dan DAO yang membutuhkan waktu lama harus dikerjakan secara serial.
Agar kita dapat bekerja secara paralel, kita dapat mengatur ulang dependensi sebagai berikut.

Kita menambahkan modul baru, yaitu DAO-API dan DAO-Impl. Modul DAO-API ini berisi interface dari modul DAO, tanpa implementasi. Implementasinya berada di modul DAO-Impl.
Pembagian yang baru ini didasarkan pada waktu pengembangan dari masing-masing modul. Modul DM dan DAO-API bisa dikembangkan dengan cepat, karena hanya berisi struktur data dan deklarasi method saja. Modul UI dan DAO-Impl butuh waktu lama, karena relatif kompleks dan membutuhkan banyak test.
Dengan skema baru, project schedule menjadi seperti ini.

Dengan skema di atas, kita dapat mengalokasikan agar tim DAO dan tim UI bersama-sama mengerjakan modul Domain Model dan DAO-API. Setelah selesai, tim UI dapat mengerjakan modul UI secara paralel dengan tim DAO yang mengerjakan modul DAO-Impl.
Durasi development dapat dikurangi menjadi 7 minggu saja.
Masalah dalam implementasi
Ok, kita sudah mendesain dependensi sedemikian rupa, sehingga bisa meminimasi idle time. Berarti kita sudah menjadi Development Team Leader yang canggih … benar??
Belum, yang kita lakukan ini baru setengah jalan. Mengelola tim yang bekerja paralel itu bukan pekerjaan yang mudah. Desain dependensi yang baik memungkinkan tim bekerja paralel. Tapi butuh perangkat tambahan agar mereka bisa berkoordinasi secara efisien.
Masalah terbesar dengan project multi-modul ini adalah bagaimana mengelola perubahan (Change Management). Developer yang berpengalaman pasti sudah tahu bahwa keinginan end-user selalu berubah. Perubahan ini menjadi masalah bila terjadi di modul yang digantungi banyak modul lain.
Contohnya, pada assessment awal, kita sudah mendefinisikan bahwa class Person memiliki tiga property, yaitu id, nama, dan tanggalLahir. Class Person ini kita tempatkan di modul Domain Model, yang digunakan oleh semua modul lain. Katakan saja misalnya kita rilis dengan versi 1.0.
Ternyata peta persaingan bisnis aplikasi contact berubah. Perusahaan pesaing menyediakan aplikasi yang tidak hanya menyimpan tanggal lahir, tapi juga nomer handphone. Tentunya kita harus buru-buru mengupgrade aplikasi (yang belum selesai dikerjakan) agar juga memuat data nomer handphone.
Nah, bagaimana mengelola perubahan ini agar kedua tim yang sedang bekerja (DAO-Impl dan UI) dapat menyesuaikan diri dengan mudah?
Implementasi yang paling sederhana bisa dilakukan dengan USB Flashdisk. Compile saja modul DM, kemudian copy ke flashdisk. Edarkan flashdisk tersebut ke seluruh tim … masalah selesai.
Cara flashdisk, walaupun bisa dilakukan, tapi tidak scalable. Jika dependensinya rumit (misalnya membuat aplikasi ERP), kita harus membuat satu departemen khusus untuk mengedarkan flashdisk.
Nah, inilah gunanya Ivy. Dengan Ivy, kita bisa membuat perubahan di class Person, kemudian menyuruh Ivy untuk mempublikasikannya ke lokasi tertentu dengan versi 1.1. Begitu tim lain melakukan kompilasi, Ivy secara otomatis akan mendeteksi bahwa ada update terbaru di modul Domain Model, mendownload versi terbaru, menghapus versi yang lama, baru melakukan kompilasi.
Ivy dapat mengelola dependensi antar modul dalam internal perusahaan, maupun dependensi dengan pustaka open-source. Contoh aplikasi kita di atas menggunakan pustaka dari Spring Framework, MySQL, Velocity, dan SiteMesh. Masing-masing pustaka tersebut memiliki dependensi lagi terhadap pustaka lain, misalnya Apache Commons dan Log4J.
Dengan menggunakan Ivy, kita hanya perlu mendeklarasikan dependensi langsung, yaitu Spring Framework, MySQL, Velocity, dan SiteMesh. Selanjutnya Ivy akan mencari tahu semua dependensi level kedua terhadap Jakarta Commons dan Log4J. Begitu kita melakukan kompilasi, Ivy akan terlebih dulu mengunduh semua dependensi dari internet, melakukan setting CLASSPATH, baru melakukan kompilasi.
Ivy juga memiliki fitur configuration. Dengan fitur ini, kita bisa membedakan dependensi untuk kompilasi, melakukan test, atau mendeploy aplikasi ke production.
Contohnya, bila kita menggunakan database, kita tidak perlu mendownload *.jar apapun untuk melakukan kompilasi. Pada saat kita test di IDE sendiri, kita gunakan database HSQLDB supaya ringan dan cepat. Untuk test oleh tim tester, kita gunakan database MySQL. Akhirnya, untuk UAT dan production, kita gunakan database Oracle.
Contoh lain, kita bisa mendefinisikan konfigurasi deployment dan delivery. Untuk deployment, kita menginstal aplikasi di tempat client. Tentunya kita hanya butuh *.jar saja. Lain halnya dengan delivery. Selain *.jar, kita juga harus memuat source code, javadoc, manual penggunaan, dan lainnya ke dalam DVD untuk diserah-terimakan dengan client.
Dengan menggunakan fitur configuration Ivy, kita dapat mendefinisikan berbagai kombinasi artifak yang dibutuhkan untuk berbagai situasi.
Pada artikel selanjutnya, kita akan mulai membuat modul Domain Model. Seluruh modul yang dibuat dalam rangkaian artikel ini bisa dibuat dengan Text Editor biasa. Tidak perlu IDE canggih semacam Netbeans, Eclipse, atau IDEA.
Stay tuned.
05 Sep 2008
Masih dalam rangka mengotomasi workflow di ArtiVisi, artikel ini akan membahas tentang cara memindahkan file antar komputer secara aman tapi otomatis.
Ada berbagai cara kita memindahkan file dari satu komputer ke komputer lain, diantaranya:
Cara pertama jelas tidak bisa diotomasi.
Cara kedua sampai keempat mengharuskan kita membuka write access tanpa password di komputer tujuan supaya bisa otomatis. Kalau ada passwordnya kan harus ada seseorang yang mengetik password tersebut. Jadi agak sulit mengotomasinya.
Oleh karena itu, kita akan membahas cara kelima, yaitu SCP. SCP –atau Secure Copy– adalah mekanisme copy file melalui protokol SSH. File yang dikirim terenkripsi. Untuk dapat masuk ke komputer tujuan, kita harus melakukan otentikasi. Jadi ini adalah cara yang relatif aman untuk mengirim file.
Tunggu dulu, katanya mau otomatis, tapi kok harus otentikasi?? Berarti harus ada yang mengetik password dong ….
Tidak juga, makanya saya menggunakan istilah otentikasi, bukan password. SSH dapat melakukan otentikasi dengan password maupun private key. Pada artikel ini, kita akan membahas tentang otentikasi private key.
Artikel ini dibuat menggunakan Ubuntu Hardy dengan openssh sudah terinstal.
Ada beberapa langkah yang harus kita lakukan, yaitu:
-
Membuat private key di komputer pengirim
-
Mengirim public key ke komputer tujuan
-
Registrasi public key di komputer tujuan
Sebelum mulai, kita tentukan dulu studi kasusnya.
Di tengah pertarungan dengan Pain, guru genit Jiraiya tiba-tiba berhasil menemukan kelemahan musuhnya. Dia ingin mengirim file berisi informasi tersebut ke sang Hokage seksi, yaitu Tsunade. Rencananya, dia akan login ke server di markas dengan username Tsunade dan menyimpan file tersebut di folder /home/tsunade/important
.
Tentunya Tsunade tidak akan memberitahukan passwordnya kepada Jiraiya, mengingat tabiatnya yang genit. Sebagai gantinya, dia mendaftarkan public key Jiraiya ke user accountnya di server, sehingga Jiraiya bisa login sebagai Tsunade, tanpa Tsunade harus memberitahukan passwordnya kepada Jiraiya.
Pada cerita di atas, kita punya dua komputer, yaitu laptopnya Jiraiya yang dibawanya kemanapun pergi, dan server di markas. Kita juga punya dua user, yaitu Jiraiya dan Tsunade.
Agar bisa melakukan public key authentication, tentunya hal pertama yang harus dilakukan adalah membuat public key.
Membuat public key
Jiraiya harus membuat public key di laptopnya sendiri. Public key selalu berpasangan dengan private key. Untuk membuat public key, Jiraiya mengetik perintah berikut di terminal.
Perintah tersebut akan menanyakan password untuk membuka private key. Jiraiya memilih tidak memberikan password. Sebetulnya ini kurang aman, karena kalau ada orang lain yang berhasil mendapatkan file private key, dia bisa login ke server di markas tanpa hambatan.
Tapi mau bagaimana lagi, hidup sebagai ninja sangat berbahaya. Kita tidak tahu apakah setelah pertarungan kita masih punya tangan untuk mengetik password.
Tekan enter beberapa kali sampai selesai. Berikut output yang dihasilkan.
Generating public/private rsa key pair.
Enter file in which to save the key (/home/jiraiya/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/jiraiya/.ssh/id_rsa.
Your public key has been saved in /home/jiraiya/.ssh/id_rsa.pub.
The key fingerprint is:
6f:7c:e2:52:f1:14:5d:2c:7f:3a:53:5e:fe:7f:98:9c jiraiya@laptop
Selanjutnya, kita harus kirimkan file public key ke Tsunade agar didaftarkan di accountnya. File public key ini bisa ditemukan di folder /home/jiraiya/.ssh/
dengan nama id_rsa.pub
. Public key bisa dikirim melalui media apapun, misalnya email, usb flashdisk, burung hantu, maupun burung merpati.
Registrasi Public Key
Singkat kata, Tsunade telah menerima public key dari Jiraiya. Dia harus mendaftarkannya di accountnya agar Jiraiya bisa login.
Tsunade harus login dulu ke server dan menaruh file public key tersebut di sana. Misalnya dia letakkan di folder /home/tsunade/
dan nama filenya diubah menjadi jiraiya_id_rsa.pub
.
Untuk meregistrasinya, Tsunade menggunakan perintah berikut di terminal.
cat /home/tsunade/jiraiya_id_rsa.pub >> /home/tsunade/.ssh/authorized_keys
Setelah itu, public key tidak lagi diperlukan, sehingga bisa dihapus.
rm /home/tsunade/jiraiya_id_pub
Selesai sudah konfigurasi di server, sekarang kita kembali ke pertarungan Jiraiya vs Pain.
Login dengan public key
Sesaat sebelum Jiraiya menekan tombol Send di Mozilla Thunderbird, Pain mendaratkan serangan mematikan ke Jiraiya, sehingga ybs tidak dapat menggerakkan tangannya. Jiraiya membatin, “Untung saja saya sudah setup public key di server dengan account Tsunade. Baiklah, mari kita scp saja.”
Untuk mengirim file tersebut melalui scp dengan public key, berikut adalah perintahnya
scp -i /path/menuju/private/key username@komputer-tujuan:folder-tujuan
Jadi, untuk mengirim file pain-secret.txt
ke server dengan username tsunade, Jiraiya menggunakan perintah berikut
scp -i /home/jiraiya/.ssh/id_rsa pain-secret.txt tsunade@server:/home/tsunade/important/
File akan segera terkirim tanpa harus mengetik password.
Lebih lanjut tentang ssh dengan public/private key bisa dibaca di sini.
Lebih lanjut tentang nasib Jiraiya bisa dibaca di sini.
Selamat mencoba
04 Sep 2008
Trac sudah terinstal, sekarang harus diamankan melalui prosedur backup.
Seperti biasa, semua prosedur backup harus otomatis dan terjadwal. Kalau tidak begitu, pasti tidak akan dijalankan. Jadi, selain kegiatan memburn CD, kegiatan backup lainnya harus diotomasi.
Di website Trac sudah dijelaskan tentang cara melakukan backup terhadap instalasi Trac. Kita hanya perlu membuat script sedikit supaya bisa membackup seluruh project dalam folder parent trac, dan mengkompresnya.
Berikut scriptnya, seperti biasa, menggunakan Ruby.
Script ini diadaptasi dari script sebelumnya untuk backup Subversion repo.
Berikut scriptnya
require 'zlib'
require 'fileutils'
if ARGV.length < 2
puts "Usage : ruby trac-backup.rb <Trac Parent folder> <backupfolder>"
exit
end
# some configuration
trac_parent_path = ARGV[0]
backup_folder = ARGV[1]
# variable initialization
current_date = Time.now.strftime("%Y%m%d")
Dir.foreach(trac_parent_path) { |trac|
next if('.' == trac || '..' == trac)
puts "Start to process folder : "+trac
puts "Performing trac hotcopy"
project_name = trac_parent_path + File::SEPARATOR + trac
dumpfile_folder = trac + '-' +current_date
dumpfile = backup_folder + File::SEPARATOR + dumpfile_folder
`trac-admin #{project_name} hotcopy #{dumpfile}`
puts "Compressing dumpfile"
`tar czf #{backup_folder}/#{dumpfile_folder}.tar.gz -C #{backup_folder} #{dumpfile_folder}`
puts "Deleting uncompressed backup"
FileUtils.rm_r dumpfile
}
Save dengan nama trac-backup.rb
.
Warning, kode di atas tidak bisa dijalankan di Windows, karena menggunakan command line tar untuk mengkompres file. Jika Anda ingin menggunakan di Windows, silahkan gunakan TugZIP seperti contoh ini.
Untuk menjalankannya, cukup panggil dari command prompt.
ruby trac-backup.rb /var/lib/trac /folder/tempat/backup
Supaya fully-automated, daftarkan di cron. Buka editor crontab.
Kemudian ketikkan entri sebagai berikut
0 23 * * 5 /usr/bin/ruby /full/path/ke/trac-backup.rb /var/lib/trac /full/path/ke/folder/backup
Backup akan dijalankan setiap jam 23.00 pada hari Jumat. Lebih lanjut tentang cron bisa dibaca di sini. Jika bingung dengan formatnya, bisa gunakan generator crontab online.
03 Sep 2008
Mulai beberapa minggu ini, ArtiVisi kebanjiran project. Ini tentu harus dikelola dengan baik. Semua orang harus bekerja se-efisien mungkin. Menjadi tugas saya sebagai manager untuk memudahkan orang-orang bekerja.
Opa Abe Lincoln pernah bilang gini, jauh sebelum mas Barry masuk sekolah di SD Besuki, Menteng.
If I had eight hours to chop down a tree, I’d spend six hours sharpening my axe
So be it ….
Hal pertama yang harus dilakukan sebelum mulai bekerja adalah mempersiapkan environment. Ada beberapa tools yang dapat digunakan untuk mempercepat kegiatan software development, terutama di Java. Ini pernah saya bahas di artikel ini.
Subversion sudah terinstal sejak hari pertama ArtiVisi buka warung. Bahkan sebelum websitenya jadi, repository sudah siap digunakan dan diamankan melalui prosedur backup. Ant-Ivy juga sudah terinstal dan terkonfigurasi. Tinggal menunggu terisi dengan *.jar external dari repository ibiblio dan repository springsource.
Hal berikutnya adalah mempersiapkan bug tracker dan project management tools. Karena saya menggunakan Eclipse, maka kriteria pemilihan bug tracker tentu saja adalah kompatibilitasnya dengan Mylyn. Bugzilla cuma bisa untuk bug-tracker, jadi saya pilih saja Trac.
Berikut langkah instalasi di Ubuntu Gutsy Server.
Instalasi Trac
Instalasi Trac tidak sulit, cukup satu baris perintah saja.
sudo apt-get install trac libapache2-mod-python python-setuptools
Selanjutnya, kita konfigurasi VirtualHost Apache. Saya buatkan satu subdomain khusus yang namanya trac.artivisi.com. Jadi, kita buat file /etc/apache2/sites-available/trac.artivisi.com
.
Subdomain ini nantinya akan menampung data Trac untuk banyak project. Jadi, kita harus mengkonfigurasi parent path yang menyatakan folder tempat data trac untuk masing-masing project disimpan.
Berikut isi filenya.
<Location /trac>
SetHandler mod_python
PythonHandler trac.web.modpython_frontend
PythonOption TracEnvParentDir /var/lib/trac
PythonOption TracUriRoot /trac
</Location>
Selanjutnya, kita konfigurasi otentikasinya supaya mengacu ke LDAP tempat menyimpan username dan password Subversion. Jadi username dan password untuk svn commit sama dengan untuk login ke Trac.
<LocationMatch "/trac/[^/]+/login">
AuthType Basic
AuthName "ArtiVisi Trac Server"
AuthBasicProvider ldap
AuthLDAPURL url-ldap-server
AuthLDAPBindDN dn-untuk-apache-login-di-ldap
AuthLDAPBindPassword password-dn-tersebut
AuthzLDAPAuthoritative off
Require valid-user
</LocationMatch>
Sekarang konfigurasi Apache sudah selesai. Jangan lupa me-restart apache.
sudo /etc/init.d/apache2/restart
Berikutnya, membuat project baru.
Membuat Project
Misalnya kita ingin membuat project bernama hello-world. Sebagai root, masuk ke folder /var/lib/trac. Kemudian buat projectnya. Jangan lupa tambahkan user administratornya sekaligus.Terakhir, ganti kepemilikan folder sesuai dengan user yang digunakan proses webserver.
sudo -i
cd /var/lib/trac
trac-admin hello-world initenv
trac-admin hello-world permission add endy TRAC_ADMIN
chown -R www-data.www-data hello-world
Langkah di atas akan menginisialisasi Trac dengan satu username –yaitu endy– sebagai administrator. Selanjutnya, kita edit konfigurasinya agar setiap perubahan bug/task akan mengirim notifikasi ke email. Edit file /var/lib/trac/hello-world/conf/trac.ini
smtp_enabled = true
smtp_default_domain = artivisi.com
smtp_from_name = ArtiVisi Trac Server
smtp_from = artivisi.dev@gmail.com
smtp_replyto = artivisi.dev@gmail.com
smtp_server = smtp.gmail.com
smtp_port = 587
smtp_user = artivisi.dev
smtp_password = rahasia_dong
use_tls = true
Pada konfigurasi di atas, kita menggunakan Gmail yang gratis dan mudah. Kita buat account di Gmail bernama artivisi.dev dan kita berikan password rahasia_dong.
Selesai sudah. Sekarang silahkan browse ke URLnya.
Plugin WebAdmin
Sebagai tambahan, kita bisa menambahkan plugin webadmin supaya kita bisa menambah user dan mengatur permission melalui interface web.
Ubuntu secara default menginstal Trac versi 0.10, jadi kita harus menginstal plugin WebAdmin secara manual. Di versi 0.11 Trac sudah menyertakan WebAdmin secara default.
Instalasi dijalankan langsung dari subversion repository.
sudo easy_install http://svn.edgewall.org/repos/trac/sandbox/webadmin/
Untuk menjalankan plugin, kita perlu membuat file /etc/trac/trac.ini
. Berikut isinya.
[components]
webadmin.* = enabled
Voila, nanti akan muncul tombol admin setelah kita login.
03 Sep 2008
Ant, adalah tools untuk mengotomasi kegiatan build di Java. Seperti kita tahu, dari mulai source code diketik sampai bisa digunakan user, ada beberapa kegiatan yang harus dilakukan, misalnya:
-
Bersihkan sisa-sisa kompilasi terdahulu
-
Setting CLASSPATH
-
Kompilasi
-
Masukkan artifak lain ke CLASSPATH sesuai kebutuhan (*.properties, *.xml)
-
Jalankan automated test
-
Kompilasi Javadoc
-
Paket menjadi *jar atau *war
-
Deploy ke server (bila perlu)
Rangkaian kegiatan ini disebut dengan proses build.
Jika kegiatan ini dilakukan secara manual, tentu saja masa muda kita akan habis untuk melakukan build dan tidak akan sempat menulis kode program.
Kita bisa memudahkan proses build dengan bantuan IDE. Tinggal klik Clean and Build, langsung beres. Tapi kita tahu bahwa masing-masing orang memiliki IDE favorit masing-masing. Jadi langkah-langkah build bisa jadi berbeda di masing-masing IDE. Selain itu, build dengan IDE tidak otomatis. Harus ada seseorang yang menekan tombol Clean and Build. Tentu saja hal ini mencegah kita untuk melakukan otomasi penuh semacam Continuous Integration.
Ada dua tools yang biasa digunakan untuk build, yaitu Ant dan Maven. Maven memiliki kelebihan dibanding Ant, yaitu dia:
-
mampu mengelola dependensi
-
membuatkan website
-
melakukan kegiatan lain yang fancy, seperti menjalankan webserver (mvn:jetty), unit test, dan lain sebagainya
dan fitur-fitur lain yang bisa dilihat di sini dan di sini.
Maven sangat powerful, tapi seperti sudah sering saya katakan,
with great power, comes great complexity
Maven relatif sulit dipelajari dan banyak mengandung black-magic (baca: banyak mengandung undocumented behavior). Selain itu, Maven juga tidak reliable, dibuktikan dengan dokumentasi cara melakukan build untuk salah satu project open source terkenal Cocoon.
Dengan berbagai plus-minus di atas, akhirnya saya memutuskan untuk menggunakan Ant ditambah dengan Ivy saja. Toh sebenarnya kami di ArtiVisi cuma butuh dependency management saja. Ivy lebih mudah dipelajari, dan hei … contoh aplikasi SpringSource Application Platform (SSAP) di-build menggunakan Ivy.
Sekedar informasi, contoh aplikasi Petclinic SSAP cukup kompleks. Aplikasi tersebut memiliki banyak konfigurasi yang dapat dipilih, antara lain:
-
Framework akses database : JDBC, JPA, Hibernate, atau Eclipselink
-
Database provider : HSQLDB atau MySQL
Dengan banyak kombinasi tersebut, pengelolaan dependency dan proses build menjadi rumit. Domain modelnya saja digunakan oleh banyak modul lain. Belum lagi dependency terhadap pustaka external seperti Hibernate dan Eclipselink. Akan ada banyak konfigurasi untuk compile, test, dan deployment.
Aplikasi contoh tersebut sudah mencerminkan kemampuan Ivy untuk mengelola project dengan banyak relasi ke project lainnya. Dan faktor yang paling penting, Ivy mudah dipelajari. Kita akan buktikan dalam beberapa posting berikutnya.
Lebih jauh tentang dependency management akan dibahas pada posting selanjutnya tentang Ivy. Untuk sekarang, kita akan bahas cara instalasinya.
Instalasi Ant
Pertama, kita harus menginstal Ant dulu. Karena saya menggunakan Ubuntu, instalasi tidak terlalu sulit. Cukup ketikkan perintah berikut di command prompt.
sudo apt-get install ant ant-optional
Atau jika Anda alergi dengan command prompt, bisa menggunakan System > Administration > Synaptic Package Manager.
Selain cara otomatis seperti di atas, kita juga bisa menginstal secara manual. Caranya, donlod Ant, kemudian extract. Masukkan path menuju folder bin di dalam hasil extract ke dalam environment variable PATH.
Kemudian, test instalasi dengan mengetik perintah ant -v
di command prompt. Berikut hasilnya di komputer saya:
endy@kintoun:~$ ant -v
Apache Ant version 1.7.0 compiled on August 29 2007
Buildfile: build.xml does not exist!
Build failed
Baiklah, kita sudah mendapatkan Ant versi 1.7.0. Selanjutnya, instalasi Ivy.
Instalasi Ivy
Pertama, tentunya download dulu Ivy-nya. Pada saat artikel ini ditulis, versi terbaru adalah 2.0.0-beta2. Jangan khawatir dengan status beta, karena menurut pengalaman saya, versi ini cukup stabil.
Setelah donlod, kemudian extract. Kita membutuhkan file berikut :
-
ivy-2.0.0-beta2.jar
-
ivy-core-2.0.0-beta2
dan satu file lagi bila kita ingin mengakses repository melalui ssh.
Masukkan file tersebut ke lokasi instalasi Ant, dalam folder lib. Bila Anda menggunakan Ubuntu seperti saya, dan menginstal Ant menggunakan Synaptic, apt-get, atau aptitude, maka lokasi instalasi Ant ada di
Instalasi Ivy selesai.
Dengan menggunakan Ivy, kita dapat mengelola proyek raksasa (terdiri dari banyak modul, dikerjakan oleh puluhan tim) dengan lebih mudah.
Bagaimana cara menggunakannya? Tunggu posting selanjutnya :D
*[IDE]: Integrated Development Environment