2016-07-06 17 views
3

Gradleを使用して構築されたJavaアプリケーションを実行するには、クラスパスに個々のライブラリにディレクトリを追加する必要があります。gradleで構築されたプロジェクトでコマンドラインツールを実行するにはどうすればよいですか?

したがってIntelliJでアプリケーションを起動するコマンドを見ると、クラスパスの依存関係でいっぱいになった画面全体を簡単に見ることができます。

IntelliJは自動的にそれらを理解することができるのでこれは問題ありませんが、何か変更するたびに実行コンフィギュレーションを編集するのではなく、コマンドラインツールをターミナルで実行して引数を書き込めます。マシン固有のJAR依存関係の画面全体をIDEから貼り付けることなく、どうすればできますか?

すべてのライブラリをバンドルする巨大なJARファイルを作成せずに開発環境で実行することはできますか?

+0

は、私はあなたが希望することを正しく理解していますJVMの正しい引数を指定する必要なく、コマンドラインからJARを実行し、オプションでプログラムのコマンドライン引数を指定できますか? – majk

+0

JARやクラスファイルから実行されても構いません。私はプログラムを呼び出すことができる1つのライナーが欲しいです。 – Alicia

答えて

4

JavaExec taskをご覧ください。次のようなカスタムタスクを作成することができます

task customRun(type: JavaExec) { 
    classpath = sourceSets.main.runtimeClasspath 
    main = "fully.qualified.name.of.your.main" 
    args = ["100", "1000" ...] // the command line options for your tool 
    jvmArgs = [ ... ] // additional JVM args you might need 
} 

次にあなたがgradle customRunを使用して、それを呼び出すことができます。あなたは、コマンドライン引数を提供することができるようにしたい場合は、私はGradleのプロパティを使用することをお勧めします:

gradle -PcustomRunArgs="100 1000" customRun 

と引数つかむためにタスクを修正する:

task ... { 
    ... 
    if (project.hasProperty('customRunArgs')) { 
     args = customRunArgs.split(' ') 
    } 
    ... 
} 
+0

引数をスペースで処理しません。そのためにパーサが必要です。ラッパースクリプトがなければ扱いにくいですし、グラデーションをたくさん使って出力を乱雑にしていますが、IDEからコピペするよりも優れています。 – Alicia

+1

階調を冗長にするには、 '-q'スイッチを使用してください。スペースでコマンドラインオプションをサポートするには、[CliBuilder](http://mrhaki.blogspot.ch/2009/09/groovy-goodness-parsing-commandline.html)を参照してください。 – majk

関連する問題