0

如何执行匿名 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任务完成。

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

4

1 回答 1

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 { ... }.

于 2013-10-29T15:54:33.123 回答