Jalankan Metode Utama Java di Maven

1. Ikhtisar

Dalam tutorial singkat ini, kita akan melihat bagaimana menjalankan metode utama sembarang dari kelas Java mana pun menggunakan Maven.

2. The exec-maven-plugin

Misalkan kita memiliki kelas berikut:

public class Exec { private static final Logger LOGGER = LoggerFactory.getLogger(Exec.class); public static void main(String[] args) { LOGGER.info("Running the main method"); if (args.length > 0) { LOGGER.info("List of arguments: {}", Arrays.toString(args)); } } }

Dan kami ingin menjalankan metode utamanya dari baris perintah melalui Maven.

Untuk melakukan ini, kita bisa menggunakan exec-maven-plugin . Untuk lebih spesifik, tujuan exec: java dari plugin ini mengeksekusi kelas Java yang disediakan dengan dependensi proyek yang melampirkan sebagai classpath.

Untuk menjalankan metode utama dari kelas Exec , kita harus meneruskan nama kelas yang memenuhi syarat ke plugin:

$ mvn compile exec:java -Dexec.mainClass="com.baeldung.main.Exec" 02:26:45.112 INFO com.baeldung.main.Exec - Running the main method

Seperti yang ditunjukkan di atas, kami menggunakan properti sistem exec.mainClass untuk meneruskan nama kelas yang memenuhi syarat.

Selain itu, kita harus memastikan bahwa classpath telah siap sebelum menjalankan metode utama. Itulah mengapa kami menyusun kode sumber sebelum menjalankan metode utama.

Kita bisa mencapai hal yang sama dengan java dan javac biasa. Namun, ini bisa merepotkan saat kita bekerja dengan classpath yang cukup besar. Sebaliknya,saat menggunakan plugin ini, Maven secara otomatis menangani pengisian classpath.

3. Menyampaikan Argumen

Mungkin juga untuk meneruskan argumen dari baris perintah ke metode utama. Untuk melakukan itu, kita dapat menggunakan properti sistem exec.args :

$ mvn compile exec:java -Dexec.mainClass="com.baeldung.main.Exec" \ -Dexec.args="First Second" 02:31:08.235 INFO com.baeldung.main.Exec - Running the main method 02:31:08.236 INFO com.baeldung.main.Exec - List of arguments: [First, Second]

Seperti yang ditunjukkan di atas, kami mengirimkan daftar argumen yang dipisahkan spasi. Selain itu, kita dapat menggunakan daftar argumen yang dipisahkan koma melalui properti sistem exec.arguments :

$ mvn compile exec:java -Dexec.mainClass="com.baeldung.main.Exec" \ -Dexec.arguments="Hello World,Bye" 02:32:25.616 INFO com.baeldung.main.Exec - Running the main method 02:32:25.618 INFO com.baeldung.main.Exec - List of arguments: [Hello World, Bye]

Kedua opsi ini dapat berguna ketika kita ingin menggunakan pembatas (spasi atau koma) dalam argumen itu sendiri.

4. Konfigurasi Kustom

Kami juga dapat secara eksplisit mendeklarasikan ketergantungan plugin di pom.xml kami . Dengan cara ini, kita bisa menggunakan konfigurasi custom dan default.

Misalnya, kita dapat menentukan kelas utama default dalam konfigurasi plugin:

   org.codehaus.mojo exec-maven-plugin 3.0.0  com.baeldung.main.Exec    

Sekarang jika kita tidak menentukan nama yang sepenuhnya memenuhi syarat dari kelas yang diinginkan, com.baeldung.main.Exec akan digunakan:

$ mvn compile exec:java 02:33:14.197 INFO com.baeldung.main.Exec - Running the main method

Namun, konfigurasi default ini masih dapat diganti melalui exec eksplisit . properti sistem mainClass .

Selain itu, kami juga dapat menentukan argumen program default dalam konfigurasi kami:

 com.baeldung.main.Exec  First Second  

Dengan cara ini kita tidak perlu meneruskan argumen ini pada baris perintah:

$ mvn clean compile exec:java 02:34:24.448 INFO com.baeldung.main.Exec - Running the main method 02:34:24.450 INFO com.baeldung.main.Exec - List of arguments: [First, Second]

Selain konfigurasi ini, masih banyak lagi yang tersedia yang tercakup dalam dokumentasi resmi.

5. Kesimpulan

Dalam artikel singkat ini, kami melihat cara menjalankan metode utama dari baris perintah melalui exec-maven-plugin .

Seperti biasa, semua contoh tersedia di GitHub.