gradle自定义任务执行阶段

时间:2015-07-13 18:18:50

标签: gradle

此问题适用于gradle(> = 2.4)。我想写一个自定义任务,如下所示:

https://docs.gradle.org/current/userguide/custom_tasks.html

class GreetingTask extends DefaultTask {
    @TaskAction
    def greet() {
        println 'hello from GreetingTask'
    }
}

task hello(type: GreetingTask)

如何在执行阶段运行此任务?用

传递一个空的闭包
<< {

}

唯一的解决方案?

修改

该任务应该在多项目构建中使用,并将多个任务作为依赖项。

我希望命令gradle build可以通过说出类似

的内容来构建所有项目
`build.dependsOn(hello)`

但似乎在构建的配置阶段调用了任务hello。

1 个答案:

答案 0 :(得分:2)

将以下内容添加到 build.gradle 文件中:

class GreetingTask extends DefaultTask {
    @TaskAction
    def greet() {
        println 'hello from GreetingTask'
    }
}

task hello(type: GreetingTask) {
    println "This is the configuration phase"

    doFirst {
        println "This is the execution phase"
    }
}

现在执行gradle hello。您将看到的输出是

This is the configuration phase
:hello
This is the execution phase
hello from GreetingTask

BUILD SUCCESSFUL

如您所见,任务的输出发生在doFirst()之后,这肯定发生在执行阶段。