Saya memiliki masalah berikut. Saya ingin menjalankan mvn
dari baris perintah untuk sebuah Main.java
file. Main.java
menerima parameter. Bagaimana cara melakukannya dari baris perintah?
Saya mencoba mencari contoh tetapi saya tidak berhasil. Bisakah seseorang membantu saya dengan memberi saya contoh tentang itu?
Saya melihat ke sini tetapi tidak begitu mengerti apa yang harus saya lakukan.
Juga, bagaimana cara menjalankan perintah itu dari folder yang berbeda dari folder Main.java?
misalnya Main.java
terletak di my/java/program/Main.java
. Apa yang harus saya masukkan
mvn exec:java -Dexec.mainClass="what to put here?" -Dexec.args="arg0 arg1 arg2"
Jawaban:
Anda bisa menjalankan:
mvn exec:exec -Dexec.args="arg1"
.Ini akan meneruskan argumen arg1 ke program Anda.
Anda harus menentukan kelas utama yang sepenuhnya memenuhi syarat, misalnya, yang dibutuhkan Main.java yang ada dalam pengujian paket
mvn exec:java -Dexec.mainClass=test.Main
Dengan menggunakan
-f
parameter, seperti yang dijelaskan di sini , Anda juga dapat menjalankannya dari direktori lain.mvn exec:java -Dexec.mainClass=test.Main -f folder/pom.xm
Untuk beberapa argumen, cukup pisahkan dengan spasi seperti yang Anda lakukan pada baris perintah.
mvn exec:java -Dexec.mainClass=test.Main -Dexec.args="arg1 arg2 arg3"
Untuk argumen yang dipisahkan dengan a space, Anda dapat mengelompokkan menggunakan
'argument separated with space'
di dalam tanda kutip.mvn exec:java -Dexec.mainClass=test.Main -Dexec.args="'argument separated with space' 'another one'"
sumber
Selain menjalankannya dengan
mvn exec:java
, Anda juga dapat menjalankannya denganmvn exec:exec
mvn exec:exec -Dexec.executable="java" -Dexec.args="-classpath %classpath your.package.MainClass"
sumber
-Dexec.args
:mvn exec:exec -Dexec.executable="java" -Dexec.args="-Xmx4g -classpath %classpath your.package.MainClass"
Menambahkan skrip shell misalnya
run.sh
membuatnya lebih mudah:#!/usr/bin/env bash export JAVA_PROGRAM_ARGS=`echo "$@"` mvn exec:java -Dexec.mainClass="test.Main" -Dexec.args="$JAVA_PROGRAM_ARGS"
Kemudian Anda dapat mengeksekusi:
./run.sh arg1 arg2 arg3
sumber
$@
menyimpan semua argumen dalam daftar string yang dibungkus dengan tanda kutip. Jika Anda ingin menggunakannya secara langsung, Anda dapat menggunakan$*
- semua argumen sebagai string tunggal. Apakah kamu sudah mencobanya?