Apa itu Eclipse Tycho?


Ini adalah pertanyaan yang muncul saat saya sedang membaca panduan untuk men-build Cloud Foundry Integration For Eclipse, plugin resmi untuk Eclipse yang mempermudah deploy aplikasi yang dibuat di Eclipse ke Cloud Foundry.  Ini pertama kalinya saya mendengar nama Tycho disebut.  Apa sebenarnya benda itu?

Secara garis besar, Tycho adalah sebuah plugin Maven yang memungkinkan pembuat plugin di Eclipse memakai Maven.  Selama ini, saat membuat plugin Eclipse, semua informasi seperti dependencies diletakkan di file MANIFEST.MF dan plugin.xml.  Bila saya memakai Maven, berarti saya harus menduplikasikan informasi tersebut ke file khas Maven, yaitu pom.xml.  Tentu saja ini akan merepotkan!  Dan itulah alasan Tycho terlahir.

Agar proyek plugin memakai Maven, maka saya men-klik kanan nama proyek, memilih menu Configure, Convert to Maven Project.

Pada proyek yang memakai Tycho, saya akan menemukan baris seperti berikut ini di pom.xml:

<plugin>
  <groupId>org.eclipse.tycho</groupId>
  <artifactId>tycho-p2-plugin</artifactId>
  <version>${tycho-version}</version> <!-- versi Tycho yang dipakai -->
  ...
</plugin>

Baris di atas menunjukkan bahwa Maven perlu men-download dan memakai Tycho.  Saya juga akan menemukan baris seperti ini di pom.xml:

<packaging>eclipse-plugin</packaging>

Ini menunjukkan apa hasil akhir yang akan dibuat oleh Maven.  Nilai lain yang bisa dipakai adalah eclipse-feature.

Setelah melakukan konversi menjadi proyek Maven, bila ini pertama kali, saya akan menemukan banyak pesan kesalahan di pom.xml.  Untuk itu saya men-klik kanan nama proyek, memilih Maven, Update Project…  Lalu, saya memilih semua proyek yang ada dengan men-klik tombol Select All.  Saya juga memberi tanda centang pada Force Update of Snapshots/Releases.  Setelah itu saya men-klik tombol OK.  Saya memastikan komputer terhubung ke internet karena Maven perlu men-download  file-file yang dibutuhkan.  Selain itu, juga tersedia Lifecycle Mappings m2e pada proyek yang memakai Tycho, yaitu  Tycho Configurator, yang dapat di-install melalui m2e Marketplace.

Tapi saya menemukan bahwa tidak semuanya bisa diproses dari m2e.  Misalnya, di proyek Cloud Foundry Integration For Eclipse, saya harus membuka command prompt untuk memberikan perintah Maven secara manual untuk pom.xml yang berada di direktori paling luar (bukan dari bagian proyek manapun).  Ini adalah parent POM yang direferensikan oleh POM di masing-masing proyek.

Untuk menghasilkan output pada proyek open source Cloud Foundry Integration For Eclipse, saya memberikan perintah seperti berikut ini:

C:>mvn -Dmaven.test.skip=true -Pe36 package
...
[INFO] ------------------------------------------------------------------------
[INFO] Reactor Summary:
[INFO]
[INFO] org.cloudfoundry.ide.eclipse.server.parent ........ SUCCESS [2.746s]
[INFO] org.cloudfoundry.ide.eclipse.server.core .......... SUCCESS [10.062s]
[INFO] org.cloudfoundry.ide.eclipse.server.rse ........... SUCCESS [0.998s]
[INFO] org.cloudfoundry.ide.eclipse.server.ui ............ SUCCESS [9.438s]
[INFO] org.cloudfoundry.ide.eclipse.server.branding ...... SUCCESS [0.515s]
[INFO] org.cloudfoundry.ide.eclipse.server ............... SUCCESS [1.030s]
[INFO] org.cloudfoundry.ide.eclipse.server.tests ......... SUCCESS [2.870s]
[INFO] org.cloudfoundry.ide.eclipse.server.source ........ SUCCESS [0.343s]
[INFO] org.cloudfoundry.ide.eclipse.server.sdk ........... SUCCESS [0.468s]
[INFO] Cloud Foundry Integration for Eclipse ............. SUCCESS [6.365s]
[INFO] org.cloudfoundry.ide.eclipse.server.target ........ SUCCESS [0.952s]
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 0:0.761s
[INFO] Finished at: Fri Dec 28 13:35:45 ICT 2012
[INFO] Final Memory: 77M/1024M
[INFO] ------------------------------------------------------------------------

Parameter -D yang memberi nilai maven.test.skip dengan true menyebabkan unit test tidak dikerjakan.  Sementara itu, parameter -P akan memilih profil yang aktif, yaitu e36.  Profil ini didefinisikan di pom.xml Cloud Foundry Integeration For Eclipse.  Btw, pada saat pertama kali dijalankan, perintah ini membutuhkan waktu lama karena ia akan men-download file yang dibutuhkan ke dalam repository lokal Maven.

Hasil akhirnya adalah sebuah folder dengan nama org.cloudfoundry.ide.eclipse.server.site, dimana folder ini adalah folder site yang sudah berisi hasil build plugin dan siap dipakai oleh pengguna bila diletakkan di web server.  Selain itu, juga ada versi ZIP untuk distribusi manual.

Semua proses build ini berlangsung dengan 1 perintah Maven di command line.  Tycho memungkinkan Maven untuk melakukan ini.  Sebagai perbandingan, tanpa Maven dan Tycho, saya harus men-klik tampilan dashboard plugin di Eclipse RCP.  Sebenarnya tidak beda repot.  Tapi lain halnya bila dibutuhkan nightly snapshot (rilis harian) dan continuous integration (pengujian secara periodik dan otomatis) dimana operasi mouse di GUI tidak bisa dijadwalkan untuk dikerjakan secara otomatis.

Tugas Tycho hanya sampai disini!  Bila misalnya ada masalah dependency di IDE Eclipse RCP, saya tetap harus menyelesaikannya.  Misalnya seluruh dependencies telah di-download oleh Maven, tapi Eclipse RCP mungkin tidak tahu harus mencari dimana.  Bila terjadi hasil seperti ini, saya perlu memilih menu Window, Preferences, Plug-in Development.  Lalu pada Target Platform, saya bisa meng-edit target yang aktif untuk menambahkan direktori baru yang berisi plugin yang dibutuhkan.

Perihal Solid Snake
I'm nothing...

Apa komentar Anda?

Please log in using one of these methods to post your comment:

Logo WordPress.com

You are commenting using your WordPress.com account. Logout / Ubah )

Gambar Twitter

You are commenting using your Twitter account. Logout / Ubah )

Foto Facebook

You are commenting using your Facebook account. Logout / Ubah )

Foto Google+

You are commenting using your Google+ account. Logout / Ubah )

Connecting to %s

%d blogger menyukai ini: