web-dev-qa-db-fra.com

Maven: Comment exécuter un fichier .Java à partir d'arguments en ligne de commande

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 puis-je le faire en ligne de commande?

J'ai essayé de trouver un exemple mais je n'ai pas réussi. Est-ce que quelqu'un pourrait m'aider en me donnant un exemple?

J'ai regardé ici mais n'ai pas bien compris ce que je devais faire.

En outre , comment puis-je 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 devrais-je mettre dans

mvn exec:Java -Dexec.mainClass="what to put here?" -Dexec.args="arg0 arg1 arg2"
78
phedon rousou

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 fichier Main.Java faisant partie d'un test de package doit

mvn exec:Java  -Dexec.mainClass=test.Main

En utilisant le -f paramètre, comme décrit ici , vous pouvez également l'exécuter à partir d'autres répertoires.

mvn exec:Java -Dexec.mainClass=test.Main -f folder/pom.xm

Pour plusieurs arguments, séparez-les simplement par un espace comme vous le feriez sur la ligne de commande.

mvn exec:Java -Dexec.mainClass=test.Main -Dexec.args="arg1 arg2 arg3"

Pour les arguments séparés par un space, vous pouvez grouper en utilisant 'argument separated with space' entre les guillemets.

mvn exec:Java -Dexec.mainClass=test.Main -Dexec.args="'argument separated with space' 'another one'"
131
Behe

En plus de l'exécuter avec mvn exec:Java, vous pouvez aussi le lancer avec mvn exec:exec

mvn exec:exec -Dexec.executable="Java" -Dexec.args="-classpath %classpath your.package.MainClass"
5
Benedikt Köppel

Ajouter un script Shell, par exemple run.sh rend beaucoup plus facile:

#!/usr/bin/env bash
export Java_PROGRAM_ARGS=`echo "$@"`
mvn exec:Java -Dexec.mainClass="test.Main" -Dexec.args="$Java_PROGRAM_ARGS"

Ensuite, vous pouvez exécuter:

./run.sh arg1 arg2 arg3
0
Tommy1005

Jetez un coup d'oeil au maven-exec-plugin . Utilisé correctement, vous pouvez le faire compiler votre classe Java puis simplement exécuter Java avec la classe compilée sur le chemin de classe. Pour lancer, il vous suffit de faire c'est utiliser

mvn exec:exec
0
Guillaume Polet