使用其他任务中的参数调用Gradle任务

lsmepo6l  于 2022-12-27  发布在  其他
关注(0)|答案(1)|浏览(121)

我有一个如下所示的Gradle任务(它收集用户的输入,然后将其传递给第二个任务):

task A() {
    doFirst {
        ant.input(message: "Version:", addproperty: 'version')
        tasks.b "-Pversion=${ant.properties.version}" //attempt to invoke task B()
    }
}

第二个任务只是打印传递的变量:

task B() {
    doFirst {
        println "Version: ${version}"
    }
}

问题是,任务A不调用任务B。我尝试了 finalizedBydoLast,但我找不到一个解决方案,如何传递参数,同时在另一个任务中执行任务。当我通过命令行执行任务B时,例如:

gradle B -Pversion=1.0.0

它工作正常,参数传递正确。

kx1ctssn

kx1ctssn1#

无法从任务A“调用”任务B- Gradle任务与函数不同。
将数据从一个任务传递到另一个任务的唯一方法是
1.第一任务将变量保存到文件,
1.则第二任务读取由第一任务产生的文件。
文档中有一个示例,您可以对其进行调整以捕获用户输入

abstract class Producer extends DefaultTask {
    @OutputFile
    abstract RegularFileProperty getOutputFile()

    @TaskAction
    void produce() {
        // capture user input
        ant.input(message: "Version:", addproperty: 'version')
        String message = ant.properties.version
        // save the user input to a file
        def output = outputFile.get().asFile
        output.text = message
        logger.quiet("Wrote '${message}' to ${output}")
    }
}

相关问题