我在下面编写了一个demo build.gradle:
task a << {
println "this is task ${name}"
}
task b << {
println "this is task ${name}"
}
task c << {
println "this is task ${name}"
}
task d << {
println "this is task ${name}"
}
task e << {
println "this is task ${name}"
}
a.dependsOn(b)
e.dependsOn(a,d)
task f << {
println "this is task ${name}"
}
e.dependsOn(f)
我在cmd中运行gradle e
,输出为:
:b
this is task b
:a
this is task a
:d
this is task d
:f
this is task f
:e
this is task e
任务e
取决于任务a
和d
,然后我将任务f
添加到e
的依赖项。现在的问题是如何首先执行任务f
。预期的输出是这样的:
:f
this is task f
:b
this is task b
:a
this is task a
:d
this is task d
:e
this is task e
我知道在这里我可以先添加b.dependsOn(f)
来执行任务f
。但是假设我不知道e
实际依赖的任务,我只知道任务e
本身,我是否可以通过f
首先执行任务e
的方法?
我已经参考了Task API文档,但我仍然不知道该怎么做。
答案 0 :(得分:0)
由我自己决定。
将此块添加到build.gradle
的末尾e.taskDependencies.getDependencies(e).each { task ->
if (task != f) {
task.mustRunAfter f
}
}