2016-08-30 114 views
3

使用参数的gradle有很多任务。如何在gradle任务中使用参数?

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

如何在我自己的自定义任务中访问参数?

+0

出于兴趣 - 这是什么具体用例? –

+0

我在一个多项目中有一个规则,可以为每个匹配的项目类型打印传统的蚂蚁信息。我可以执行诸如ant report Java或antReportJavaScript之类的操作,并且只有这些类型才会在报表中显示。我认为用类型和格式(csv,wiki)代替参数会更好。 –

回答

4

我最近偶然发现了一些内部的Gradle任务(JavaExec,我认为)中的@Option。注释的JavaDoc完全类似于您正在查找的内容,但它是“内部”API。该功能是公开API 的一部分,以Gradle 4.6开头:请参阅release notesuser guide

只是测试这一点:

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 myTask --funky=foo 
:myTask 
Value of 'myOption': foo 

BUILD SUCCESSFUL 

Total time: 0.845 secs 
0

你应该考虑通过-p参数调用中的摇篮。

Gradle Documentation

--project丙设置根项目的项目属性,例如-Pmyprop = myvalue的。请参见第14.2节“Gradle属性和 系统属性”。

考虑到这一点的build.gradle

task printProp << { 
    println customProp 
} 

调用摇篮-PcustomProp = myProp会给这个输出:

$ gradle -PcustomProp=myProp printProp 
:printProp 
myProp 

BUILD SUCCESSFUL 

Total time: 3.722 secs 

这是我发现的传递参数的方式。