Mam następujący problem. Chciałbym uruchomić plik mvn
z wiersza poleceń Main.java
. Main.java
akceptuje parametr. Jak to zrobić z wiersza poleceń?
Próbowałem znaleźć przykład, ale nie udało mi się. Czy ktoś mógłby mi pomóc, podając przykład?
Spojrzałem tutaj, ale nie do końca rozumiałem, co powinienem zrobić.
Ponadto, jak wykonać to polecenie z innego folderu niż folder Main.java?
na przykład Main.java
znajduje się w my/java/program/Main.java
. Co mam włożyć
mvn exec:java -Dexec.mainClass="what to put here?" -Dexec.args="arg0 arg1 arg2"
Odpowiedzi:
Można uruchomić:
mvn exec:exec -Dexec.args="arg1"
.Spowoduje to przekazanie argumentu arg1 do twojego programu.
Należy określić w pełni kwalifikowaną klasę główną, na przykład plik Main.java, który jest w pakiecie testowym, wymagałby
mvn exec:java -Dexec.mainClass=test.Main
Używając
-f
parametru, jak opisano tutaj , można go również uruchomić z innych katalogów.mvn exec:java -Dexec.mainClass=test.Main -f folder/pom.xm
W przypadku wielu argumentów po prostu oddziel je spacją, tak jak w wierszu poleceń.
mvn exec:java -Dexec.mainClass=test.Main -Dexec.args="arg1 arg2 arg3"
Argumenty oddzielone znakiem spacemożna grupować, używając
'argument separated with space'
cudzysłowów.mvn exec:java -Dexec.mainClass=test.Main -Dexec.args="'argument separated with space' 'another one'"
źródło
Oprócz uruchamiania go z
mvn exec:java
, możesz również uruchomić go zmvn exec:exec
mvn exec:exec -Dexec.executable="java" -Dexec.args="-classpath %classpath your.package.MainClass"
źródło
-Dexec.args
:mvn exec:exec -Dexec.executable="java" -Dexec.args="-Xmx4g -classpath %classpath your.package.MainClass"
Dodanie skryptu powłoki np
run.sh
. Znacznie ułatwia to:#!/usr/bin/env bash export JAVA_PROGRAM_ARGS=`echo "$@"` mvn exec:java -Dexec.mainClass="test.Main" -Dexec.args="$JAVA_PROGRAM_ARGS"
Następnie możesz wykonać:
źródło
$@
przechowuje wszystkie argumenty na liście ciągów znaków otoczonych cudzysłowami. Jeśli chcesz użyć go bezpośrednio, możesz użyć$*
- wszystkich argumentów jako jednego ciągu. Próbowałeś tego?