次の問題があります。 Main.Java
ファイルのコマンドラインからmvn
を実行したいと思います。 Main.Java
はパラメーターを受け入れます。 コマンドラインからどのように行うのですか?
例を見つけようとしましたが、うまくいきませんでした。誰かが私にその例を教えてくれますか?
here に見えましたが、何をすべきかよくわかりませんでした。
また、Main.Javaフォルダーとは異なるフォルダーからそのコマンドを実行するにはどうすればよいですか?
たとえば、Main.Java
はmy/Java/program/Main.Java
にあります。何を入れるべきですか
mvn exec:Java -Dexec.mainClass="what to put here?" -Dexec.args="arg0 arg1 arg2"
次を実行できます: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'"
mvn exec:Java
で実行することに加えて、mvn exec:exec
で実行することもできます
mvn exec:exec -Dexec.executable="Java" -Dexec.args="-classpath %classpath your.package.MainClass"
シェルスクリプトの追加(例: 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
maven-exec-plugin をご覧ください。適切に使用すると、Javaクラスをコンパイルし、コンパイルされたクラスをクラスパスでJava実行するだけで済みます。起動するには、使用する必要があるのは
mvn exec:exec