【发布时间】:2015-07-13 18:18:49
【问题描述】:
此问题适用于 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 在构建的配置阶段被调用。
【问题讨论】:
-
在我看来是这样的,但我对此了解不多。
-
没有闭包,执行
gradle hello会发生什么? -
@jaco0646 您正在直接调用任务。我需要在执行阶段而不是配置阶段调用它
-
@iggy 为什么你认为任务是在配置阶段执行的?
-
@iggy 您的问题包含解释该机制的链接。它说:Gradle 将在任务执行时调用该方法。注意措辞。它说“任务执行时”。不是“配置任务时”。因此,使用
@TaskAction注释的方法就是任务在执行阶段所做的事情。它还说:您不必使用方法来定义任务的行为。例如,您可以在任务构造函数中使用闭包调用 doFirst() 或 doLast() 来添加行为。所以这种基于 TaskAction 的机制只是告诉任务执行时要做什么的另一种方式
标签: gradle