Skip to main content

Maven | Menambahkan Main Class pada Manifest dan Membuat Folder lib

Bagi sahabat yang sudah terbiasa menggunakan Netbeans untuk mendevelop aplikasi, khususnya aplikasi desktop berbasis Swing, tentunya sudah tidak asing dengan Apache Ant.
Yaitu build tool default (yang konfigurasinya terletak pada file build.xml) yang digunakan Netbeans untuk membuat file distribusi dari aplikasi yang kita buat (folder dist yang berisi jar project dan folder lib yang berisikan semua file library yang dibutuhkan jar project kita).

Apabila kita lihat isi file jar project tersebut dan membuka file MANIFEST.MF, maka sahabat akan mendapati entri Main-Class dan Class-Path.
Dimana Main-Class berisi class utama yang akan dijalankan apabila jika menjalankan aplikasi dengan perintah
java -jar [project.jar]

Sedangkan Class-Path berisi file-file yang ada pada folder lib.

Seperti halnya dengan Ant, Apache Maven pun juga mendukung fitur ini, sehingga ketika proses build aplikasi dijalankan Maven akan menambahkan Main-Class dan Class-Path pada manifest, serta akan membuat folder lib di dalam folder target.

Berikut ini konfigurasi (plugin) yang harus ditambahkan pada file pom.xml

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-jar-plugin</artifactId>
    <version>2.3.2</version>
    <configuration>
        <archive>
            <manifest>
                <addClasspath>true</addClasspath>
                <classpathPrefix>lib/</classpathPrefix>
                <mainClass>${main.class}</mainClass>
            </manifest>
        </archive>
    </configuration>
</plugin>
<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-dependency-plugin</artifactId>
    <version>2.4</version>
    <executions>
        <execution>
            <id>copy</id>
            <phase>install</phase>
            <goals>
                <goal>copy-dependencies</goal>
            </goals>
            <configuration>
                <outputDirectory>${project.build.directory}/lib</outputDirectory>
            </configuration>
        </execution>
    </executions>
</plugin>

Plugin pertama (maven-jar-plugin) berfungsi untuk menambahkan Class-Path dan Main-Class pada file MANIFEST.MF nantinya. Sedangkan plugin kedua (maven-dependency-plugin) berfungsi untuk membuat folder lib pada folder target serta mengkopi semua file library ke dalam folder lib tersebut.
Dan jangan lupa menambahkah tag <main.class> di dalam tag <properties>
<main.class>[berisi class utama]</main.class>

Happy mavenized :)

Comments

Popular posts from this blog

Java | Menambahkan Dialog Konfirmasi Sebelum Keluar dari Aplikasi

Kali ini saya ingin berbagi cara sederhana untuk menampilkan dialog konfirmasi sebelum keluar dari aplikasi. Dengan syarat aplikasi yang kita buat harus menggunakan JFrame sebagai frame utama. Langkah-langkah yang harus kita lakukan adalah sebagai berikut: 1. Ganti property default close operation dari JFrame menjadi DO_NOTHING_ON_CLOSE, value ini dimaksudkan agar ketika button close dari JFrame diklik tidak akan terjadi apa-apa. Sebaliknya jika valuenya adalah EXIT_ON_CLOSE, maka ketika button close dari JFrame diklik maka program akan tertutup. setDefaultCloseOperation(DO_NOTHING_ON_CLOSE); 2. Yang kedua adalah kita harus menambahkan WindowListener pada JFrame. Interface WindowListener memiliki beberapa method terkait event terhadap window (yakni JFrame), namun yang harus kita override hanyalah method windowClosing, method ini akan dipanggil ketika button close diklik.   Sebagai informasi, apabila kita menambahkan WindowListener secara langsung ...

Bash | Solusi "Warning: remote port forwarding failed for listen port 9000"

Halo Sobat, mohon maaf saya cukup lama hiatus di blog ini. *sok pakai kata hiatus :P Langsung saja saya mau share pengalaman melakukan remote debugging PHP melalui ssh tunnel di port 9000 (standar port xdebug, yap saya menggunakan xdebug untuk debugging aplikasi PHP). Dengan ssh tunnel kita bisa menforward port 9000 dari server yang ada di cloud ke port 9000 di komputer lokal kita, sehingga kita bisa mendebug aplikasi di server melalui IDE/tool debug di komputer lokal. (Saya penyuka PHPStorm, please no IDE war here haha). Namun karena internet yang saya pakai tidak stabil sehingga seringkali ssh tunnel ini freeze di bash window, sehingga saya harus menutup paksa window tersebut. Akibatnya di sisi server, port forwarding masih aktif, jadi ketika saya melakukan tunneling lagi maka akan muncul warning  remote port forwarding failed for listen port 9000. Solusinya adalah kita harus meng-kill proses port forwarding tsb via ssh ke server dengan menjalankan perintah lsof |...

Hardware | Banyak Bersyukur dengan SSD

Seperti yang sudah saya sampaikan pada post sebelumnya, kali ini saya mau membahas upgrade laptop saya ke SSD sebagai "main" hard drive . Saya sudah cukup banyak mendengar mengenai hebatnya kecepatan yang ditawarkan SSD, namun belum mempunyai keinginan untuk upgrade karena ketidaktahuan saya bahwa ada cara untuk memasang SSD ke laptop secara mandiri (*Saya beralih dari PC ke laptop karena adik saya membutuhkan PC saya). Beruntung saya mengikuti feed dari blog Mas Vatih dan menemukan satu artikel menarik mengenai cara memasang SSD di Macbook miliknya. Berbekal info dari post tersebut dan uang tabungan yang cukup, saya memutuskan untuk mencobanya. Saya membeli SSD Crucial MX200 250GB dan HDD Caddy SATA 12.7mm dari JakartaNotebook.com *bukan iklan. Bagi yang belum tahu, HDD Caddy adalah suatu alat yang digunakan untuk memasang hard drive pada slot DVD ROM. Berikut penampakan HDD Caddy HDD Caddy 12.7mm *mirip DVD ROM kan ^^ Perlu diketahui juga bahwa HDD Caddy ...