Jalankan Kaedah Utama Java di Maven

1. Gambaran keseluruhan

Dalam tutorial ringkas ini, kita akan melihat bagaimana menjalankan kaedah utama sewenang-wenangnya dari mana-mana kelas Java menggunakan Maven.

2. Plugin exec-maven

Katakan kita mempunyai 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 melaksanakan kaedah utamanya dari baris perintah melalui Maven.

Untuk melakukan ini, kita boleh menggunakan plugin exec-maven . Untuk lebih spesifik, tujuan exec: java dari plugin ini melaksanakan kelas Java yang dibekalkan dengan ketergantungan projek merangkumi sebagai classpath.

Untuk melaksanakan kaedah utama kelas Exec , kita harus memberikan nama kelas yang memenuhi syarat sepenuhnya ke pemalam:

$ 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 harta sistem exec.mainClass untuk meneruskan nama kelas yang layak sepenuhnya.

Kita juga harus memastikan bahawa classpath sudah siap sebelum menjalankan kaedah utama. Itulah sebabnya kami menyusun kod sumber sebelum melaksanakan kaedah utama.

Kita boleh mencapai perkara yang sama dengan java biasa dan javac. Walau bagaimanapun, ini boleh membebankan ketika kita bekerja dengan jalan kelas yang cukup besar. Sebaliknya,semasa menggunakan plugin ini, Maven secara automatik menguruskan mengisi classpath.

3. Lulus Hujah

Juga mungkin untuk menyampaikan argumen dari baris perintah ke kaedah utama. Untuk melakukan itu, kita boleh menggunakan harta 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 melewati senarai argumen yang dipisahkan ruang. Selain itu, kita boleh menggunakan senarai argumen yang dipisahkan koma melalui harta 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-dua pilihan ini boleh berguna apabila kita mahu menggunakan pembatas (ruang atau koma) dalam argumen itu sendiri.

4. Konfigurasi Tersuai

Kami juga dapat secara jelas menyatakan pergantungan pemalam di pom.xml kami . Dengan cara ini, kita dapat menggunakan konfigurasi khusus dan lalai.

Sebagai contoh, kita dapat menentukan kelas utama lalai dalam konfigurasi plugin:

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

Sekarang jika kita tidak menentukan nama yang layak sepenuhnya 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

Walau bagaimanapun, masih mungkin untuk mengatasi konfigurasi lalai ini melalui eksekutif eksplisit . harta sistem mainClass .

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

 com.baeldung.main.Exec  First Second  

Dengan cara ini kita tidak perlu menyampaikan 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]

Sebagai tambahan kepada konfigurasi ini, terdapat banyak lagi yang terdapat dalam dokumentasi rasmi.

5. Kesimpulan

Dalam artikel pendek ini, kami melihat bagaimana menjalankan kaedah utama dari baris arahan melalui plugin exec-maven .

Seperti biasa, semua contoh boleh didapati di GitHub.