此问题适用于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。
答案 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()
之后,这肯定发生在执行阶段。