如何在gradle任务中使用参数?

s6fujrry  于 2023-06-23  发布在  其他
关注(0)|答案(2)|浏览(174)

gradle附带的许多任务都使用参数。

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

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

zvokhttg

zvokhttg1#

您正在寻找的功能是从Gradle 4.6开始的公共API**的一部分:请参阅发行说明和用户指南。
用户指南(v8.1.1)的更新链接:https://docs.gradle.org/8.1.1/userguide/custom_tasks.html#sec:declaring_and_using_command_line_options
测试了这个(build.gradle):

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

class MyTask extends DefaultTask {
    @Option(option="funky", description="test")
    @Input
    String myOption
    
    @TaskAction
    void echoOption() {
        logger.lifecycle("Value of 'myOption': ${myOption}")
    }
}

task myTask(type: MyTask) {
}

结果:

❯ gradle myTask --funky=bar

> Task :myTask
Value of 'myOption': bar

BUILD SUCCESSFUL in 399ms
1 actionable task: 1 executed
jjjwad0x

jjjwad0x2#

您应该考虑在调用Gradle时传递-P参数。
Gradle Documentation
--project-prop设置根项目的项目属性,例如-Pmyprop=myvalue。请参见第14.2节“Gradle属性和系统属性”。
考虑到这个构造gradle

task printProp << {
    println customProp
}

调用Gradle -PcustomProp=myProp将给予以下输出:

$ gradle -PcustomProp=myProp printProp
:printProp
myProp

BUILD SUCCESSFUL

Total time: 3.722 secs

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

相关问题