J'ai le problème suivant. Je voudrais exécuter à mvn
partir de la ligne de commande pour un Main.java
fichier. Main.java
accepte un paramètre. Comment faire cela depuis la ligne de commande?
J'ai essayé de trouver un exemple mais je n'ai pas réussi. Quelqu'un pourrait-il m'aider en m'en donnant un exemple?
J'ai regardé ici mais je n'ai pas bien compris ce que je devais faire.
De plus, comment exécuter cette commande à partir d'un dossier différent du dossier Main.java?
par exemple, le Main.java
est situé dans my/java/program/Main.java
. Que dois-je mettre
mvn exec:java -Dexec.mainClass="what to put here?" -Dexec.args="arg0 arg1 arg2"
Réponses:
Vous pouvez exécuter:
mvn exec:exec -Dexec.args="arg1"
.Cela passera l'argument arg1 à votre programme.
Vous devez spécifier la classe principale pleinement qualifiée, par exemple, un Main.java qui est dans un test de package aurait besoin
En utilisant le
-f
paramètre, comme décrit ici , vous pouvez également l'exécuter à partir d'autres répertoires.Pour plusieurs arguments, séparez-les simplement par un espace comme vous le feriez sur la ligne de commande.
Pour les arguments séparés par un space, vous pouvez regrouper en utilisant entre
'argument separated with space'
guillemets.la source
En plus de l'exécuter avec
mvn exec:java
, vous pouvez également l'exécuter avecmvn exec:exec
la source
-Dexec.args
:mvn exec:exec -Dexec.executable="java" -Dexec.args="-Xmx4g -classpath %classpath your.package.MainClass"
L'ajout d'un script shell, par exemple,
run.sh
rend les choses beaucoup plus faciles:Ensuite, vous pouvez exécuter:
la source
$@
stocke tous les arguments dans une liste de chaînes entourées de guillemets. Si vous souhaitez l'utiliser directement, vous pouvez utiliser$*
- tous les arguments sous la forme d'une seule chaîne. Avez-vous essayé cela?