2016-08-30 10 views
3

パラメータを使用するgradleには多くのタスクがあります。どのようにしてgradleタスクでパラメータを使用できますか?

gradle test --tests *Test 
gradle dependencyInsight --dependency junit 

独自のカスタムタスクでパラメータにアクセスするにはどうすればよいですか?

+0

興味深い - これは具体的な使用例ですか? –

+0

私は、一致するプロジェクトの種類ごとにレガシーなant情報を出力するルールをマルチプロジェクトに持っています。私は、ant report JavaやantReportJavaScriptのようなことをすることができ、それらの型だけがレポートに入ります。代わりにタイプとフォーマット(csv、wiki)のパラメータを持つ方がいいと思う。 –

答えて

4

私は最近、内部のGradleタスク(JavaExec、私が思う)の中で@Optionを見つけました。アノテーションのJavaDocは、探しているものとまったく同じですが、内部的なAPIでした。この機能は、Gradle 4.6で始まるパブリックAPI の一部です。とuser guideを参照してください。あなたはGradleのを呼び出すに-P引数を渡すことを検討してください

$ gradle myTask --funky=foo 
:myTask 
Value of 'myOption': foo 

BUILD SUCCESSFUL 

Total time: 0.845 secs 
0

import org.gradle.api.tasks.options.Option 

class MyTask extends DefaultTask { 
    @Option(option="funky", description="test") 
    String myOption 

    @TaskAction 
    void echoOption() { 
     logger.lifecycle("Value of 'myOption': ${myOption}") 
    } 
} 

task myTask(type: MyTask) { 
} 

結果:

はこれをテストしました。 Gradle Documentationから

--project-小道具は例-Pmyprop = myvalueため、ルートプロジェクトのプロジェクトプロパティを設定します。第14.2項「システムプロパティーのグレー表示プロパティーと 」を参照してください。

このbuild.gradleを考慮

task printProp << { 
    println customProp 
} 

起動のGradle -PcustomProp = MyPropでこの出力を与える:

$ gradle -PcustomProp=myProp printProp 
:printProp 
myProp 

BUILD SUCCESSFUL 

Total time: 3.722 secs 

これは私がパラメータを渡すことが見いださ方法です。

関連する問題