2012-04-11 45 views
68

私は以下の問題があります。私はMain.javaファイルのコマンドラインからmvnを実行したいと思います。 Main.javaはパラメータを受け入れます。 コマンドラインからどうすればいいですか?Maven:コマンドライン渡し引数から.javaファイルを実行する方法

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

私はhereと思っていましたが、私は何をすべきかをよく理解していませんでした。

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

たとえば、Main.javaは、my/java/program/Main.javaにあります。 は私がmaven-exec-pluginを見てみましょう

mvn exec:java -Dexec.mainClass="what to put here?" -Dexec.args="arg0 arg1 arg2" 
+4

でそれを実行することができますか?それはかなり簡単です。これまでに試したコードを質問に追加してください。 – Perception

+0

基本的に私がやろうとしているのは、別のJavaクラスからjavaクラスを呼び出すことです。通常、Eclipseからそのクラスを実行します。私はRuntime.getRuntime()を使用しています。exec( "");他のJavaプログラムからそのクラスを実行する。しかしMain.classにはmvnが必要です。 (私は質問を編集しました) –

答えて

109

実行できるのはmvn exec:exec -Dexec.args="arg1"です。

これは、引数arg1をプログラムに渡します。

あなたは、たとえば、パッケージテストであるMain.javaがdecribed hereとして、あなたもそれを実行することができ、-fパラメータを使用することにより

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

が必要になり、完全修飾されたメインクラスを指定する必要があります他のディレクトリから。

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

引数が複数ある場合は、コマンドラインと同じようにスペースで区切ります。 スペースで区切られた引数については

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

、あなたはグループ引用符の内側'argument separated with space'を使用することができます。 mvn exec:javaでそれを実行していることに加え

mvn exec:java -Dexec.mainClass=test.Main -Dexec.args="'argument separated with space' 'another one'" 
+0

はい、main.javaファイルの場所はどのように分かりますか? –

+0

私は最初の答えにいくつかの情報を追加しました。 – Behe

+0

もしpom.xmlを持っていなければどうしますか?私は次のエラーが表示されます。mojo:javaを実行できません。既存のpom.xmlを持つプロジェクトが必要ですが、ビルドでは使用していません。 –

0

に何を置く必要があります。正しく使用すると、Javaクラスをコンパイルして、クラスパス上でコンパイルされたクラスでjavaを実行するだけです。起動するには、使用するだけです。

mvn exec:exec 
+0

何か仕事をするような細部を見るのに苦労しているとき、「単純に」何か高いレベルのことをするのは助けにならないと言われています。あなたが提供する起動コマンドは一歩ですが、exec:execの設定例はより完全です。 – Chris

+0

@Chrisあなたが提供されたリンクに従うなら、私の答えよりもはるかに正確で完璧な例(多くは維持されています)があります。だから、私は例を投稿しなかったのです。 maven-exec-pluginのページを参照して、探しているものすべてを見つけてください。 –

3

、あなたも、あなたがリンクされチュートリアルから正確に何を理解していなかったmvn exec:exec

mvn exec:exec -Dexec.executable="java" -Dexec.args="-classpath %classpath your.package.MainClass" 
+0

この場合、Xmx引数はどこに置かれますか? – Fabich

+1

'-Dexec.args'に入れてみてください:' mvn exec:exec -Dexec.executable = "java" -Dexec.args = " - Xmx4g -classpath%classpath your.package.MainClass" ' –

+0

私はどこにthが見えないのですか? execの(IMO)単純なアプローチよりも優れています:java – Neowizard

関連する問題