2017-07-02 5 views
0

私はGradleのJavaExecタスクに多くの引数を渡そうとしています。私はこれを実行し、私は./gradlew :foo -Pprop1 -Pfoo2 ... -Pflagnような何かをするとき構文解析されていない引数をGradleのJavaExecタイプのタスクに自動的に渡しますか?

task foo(type: JavaExec) { 
    if (project.hasProperty('prop1')) { 
    args += ["--prop1"] 
    } 

    if (project.hasProperty('foo2')) { 
    args += ["--foo3"] 
    } 

    ... 
    if (project.hasProperty('flagn')) { 
    args += ["--flagn"] 
    } 
} 

そして:今、私のような何かをやっています。これは動作しますが、文字通り同じ文字列引数をGradleからJVMに渡す必要があるため、実際に面倒です。簡単な方法はありますか?解析されていない引数をすべて自動的に渡すなどの簡単な方法はありますか?

+0

例のように、すべてのプロパティに共通の接頭辞/構造がありますか? – ToYonos

+0

@ ToYonos:そうではありません - それを反映するために私の投稿を編集するべきでしょう。 :) – derekhh

+0

*解析されていないすべての引数を自動的に渡します*:あなたのプログラムの解析引数は何ですか?使用されているもの、読み込まれたもの、またはすべてのプロパティを読み込んでいますか? – ToYonos

答えて

1

StartParameterオブジェクトを介してコマンドラインからプロジェクトプロパティにアクセスできます。

だから、あなたたとえば、あなたが使用できます。

task foo(type: JavaExec) { 
    args gradle.startParameter.projectProperties.keySet().collect { "--$it" } 
} 

しかし、これはJavaExec引数に任意のコマンドラインプロジェクトのプロパティを追加します。たぶん、特定の接頭辞を持つプロパティのフィルタリングについて考えることができます。

関連する問題