执行匿名Gradle任务

时间:2013-10-29 15:30:20

标签: android gradle

如何执行匿名Gradle任务?

我想在某个任务上添加一个钩子,并用variant.mergedFlavor.packageName执行另一个任务。

android.applicationVariants.all { variant ->
    tasks.getByName("prepare${variant.name}Dependencies").finalizedBy({
        doFirst {
           println variant.mergedFlavor.packageName
        }
    })
}

我想要实现的是prepare${variant.name}Dependencies任务将由任务完成 download${variant.name}RawData任务。

这样做的正确方法是什么?

1 个答案:

答案 0 :(得分:4)

没有匿名任务,但您可以使用常规(命名)任务:

android.applicationVariants.all { variant ->
    def downloadTask = task("download${variant.name}RawData") {
        doFirst {
            println variant.mergedFlavor.packageName
        }
    }
    tasks["prepare${variant.name}Dependencies"].finalizedBy(downloadTask)
}

也就是说,我不确定在prepare回调启动时applicationVariants.all { ... }任务是否可用。如果没有,您可能必须推迟finalizedBy行,例如用project.afterEvaluate { ... }包装它。