2012-03-23 13 views

答えて

403

maven-exec-pluginを試してみてください(任意の引数を必要としません)メインクラスは以下のようにMavenのコマンドを使用して、コマンドラインから実行することができるという方法はあります。そこから:

mvn exec:java -Dexec.mainClass="com.example.Main" 

これはJVMでクラスを実行します。引数を渡すのに-Dexec.args="arg0 arg1"を使うことができます。

Windowsであれば、exec.mainClassexec.argsのための引用符を適用します。

mvn exec:java -D"exec.mainClass"="com.example.Main" 

あなたが定期的にこれをやっている場合は、あなたが同様のpom.xmlにパラメータを追加することができます。

<plugin> 
    <groupId>org.codehaus.mojo</groupId> 
    <artifactId>exec-maven-plugin</artifactId> 
    <version>1.2.1</version> 
    <executions> 
    <execution> 
     <goals> 
     <goal>java</goal> 
     </goals> 
    </execution> 
    </executions> 
    <configuration> 
    <mainClass>com.example.Main</mainClass> 
    <arguments> 
     <argument>foo</argument> 
     <argument>bar</argument> 
    </arguments> 
    </configuration> 
</plugin> 
+0

これもいいです。それが存在するかどうかはわかりませんでした。 –

+0

は、魅力のように動作します –

+12

メインクラスをこのように実行するのは便利ではありません:( – hugemeow

12

Mavenの幹部はここにトリックをしていますが、私は本当のテストのためにそれはかなり貧しいました。 maven shellを待って、これは他の人を助けることができる期待している間、私は最終的にそれがmvnexec

クローンこのレポに出て来て、あなたのパスにscriptどこかにシンボリックリンク。私は~/binが私のパスにあるので、~/bin/mvnexecを使用します。私はmvnexecは...あなたはsrcとターゲットのdirsを見ることができ、プロジェクトのルートから

起動して、スクリプトの良い名前ですが、シンボリックリンクを変更するのはあなた次第だと思います。

選択を提供してmainメソッドを持つクラスのスクリプト検索は、1(mavenized JMeldプロジェクトでの例)を選択します

$ mvnexec 
1) org.jmeld.ui.JMeldComponent 
2) org.jmeld.ui.text.FileDocument 
3) org.jmeld.JMeld 
4) org.jmeld.util.UIDefaultsPrint 
5) org.jmeld.util.PrintProperties 
6) org.jmeld.util.file.DirectoryDiff 
7) org.jmeld.util.file.VersionControlDiff 
8) org.jmeld.vc.svn.InfoCmd 
9) org.jmeld.vc.svn.DiffCmd 
10) org.jmeld.vc.svn.BlameCmd 
11) org.jmeld.vc.svn.LogCmd 
12) org.jmeld.vc.svn.CatCmd 
13) org.jmeld.vc.svn.StatusCmd 
14) org.jmeld.vc.git.StatusCmd 
15) org.jmeld.vc.hg.StatusCmd 
16) org.jmeld.vc.bzr.StatusCmd 
17) org.jmeld.Main 
18) org.apache.commons.jrcs.tools.JDiff 
#? 

1が選択されている場合(入力数)、あなたがすることができます(引数のプロンプトですmvnexec -Pで回避する)

デフォルトでは、実行ごとにプロジェクトがコンパイルされます。しかし、あなたはそれが唯一のテストクラス-Mまたは--no-main中、または本体のみのクラス-Tまたは--no-testで検索することができますmvnexec -B

を使用することを避けることができます。 -f <whatever>

これは私にとってあなたに時間を節約することができると希望しています。

+1

これはボックス外では動作しないことに注意してください必要なプログラムを持っていないWindows上で。 –

+0

それは本当です。ウィンドウの場合、cygwinを使って、grep、sed、cutなどの* nixシェルを得ることができます。 – albfan

+0

thnxの時間がたくさん保存されました –

関連する問題