如何使新的依赖项任务首先执行,而不是基本任务的所有其他现有依赖项任务

时间:2016-03-31 06:44:06

标签: android gradle

我在下面编写了一个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取决于任务ad,然后我将任务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文档,但我仍然不知道该怎么做。

1 个答案:

答案 0 :(得分:0)

由我自己决定。

将此块添加到build.gradle

的末尾
e.taskDependencies.getDependencies(e).each { task ->
    if (task != f) {
        task.mustRunAfter f
    }
}