web-dev-qa-db-ja.com

Maven:引数を渡すコマンドラインから.Javaファイルを実行する方法

次の問題があります。 Main.Javaファイルのコマンドラインからmvnを実行したいと思います。 Main.Javaはパラメーターを受け入れます。 コマンドラインからどのように行うのですか?

例を見つけようとしましたが、うまくいきませんでした。誰かが私にその例を教えてくれますか?

here に見えましたが、何をすべきかよくわかりませんでした。

また、Main.Javaフォルダーとは異なるフォルダーからそのコマンドを実行するにはどうすればよいですか?

たとえば、Main.Javamy/Java/program/Main.Javaにあります。何を入れるべきですか

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

次を実行できます:mvn exec:exec -Dexec.args="arg1"

これにより、引数arg1がプログラムに渡されます。

メインクラスを完全修飾で指定する必要があります。たとえば、パッケージテストに含まれるMain.Javaには、

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

here のように-fパラメーターを使用すると、他のディレクトリから実行することもできます。

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

複数の引数の場合は、コマンドラインの場合と同様に、スペースで区切るだけです。

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

で区切られた引数の場合 space、引用符内で'argument separated with space'を使用してグループ化できます。

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

mvn exec:Javaで実行することに加えて、mvn exec:execで実行することもできます

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

シェルスクリプトの追加(例: run.shにより、はるかに簡単になります。

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

その後、次を実行できます。

./run.sh arg1 arg2 arg3
0
Tommy1005

maven-exec-plugin をご覧ください。適切に使用すると、Javaクラスをコンパイルし、コンパイルされたクラスをクラスパスでJava実行するだけで済みます。起動するには、使用する必要があるのは

mvn exec:exec
0
Guillaume Polet