2016-08-30 120 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 

這是我發現的傳遞參數的方式。

相關問題