0

更新

我可以在运行时掌握任务。但我无法完成另一项任务。我使用的代码是:

gradle.taskGraph.whenReady {taskGraph ->
if (taskGraph.hasTask(spoonFreeDebugAndroidTest)) {
    for(Task task : project.gradle.taskGraph.allTasks.iterator())
    {
        if(task.name.startsWith("spoonFreeDebugAndroidTest")) {
            println "spoonFreeDebugAndroidTest task found"
            ciIntegrationTests.mustRunAfter task.name
            task.finalizedBy "ciIntegrationTests"
        }
    }
}

}

但是,当“spoonFreeDebugAndroidTest”失败时,任务“ciIntegrationTests”仍然没有被执行。(尽管打印了 println 行。)

原始问题

我有一个在运行时(生成任务图时)构建的勺子任务,具体取决于我的应用程序风格。例如,一个任务“spoonFreeAndroidDebugTest”是在运行时生成的,我在 build.gradle 中无法访问。

我想添加对这个任务的依赖,这样即使其他任务失败,这个任务也能执行。我尝试了这些方法:

spoon.finalizedBy "ciIntegrationTests"

这给了我这个错误

在 com.stanfy.spoon.gradle.SpoonExtension_Decorated@147456b6 上找不到参数 [ciIntegrationTests] 的 finalizedBy() 方法。

spoonFreeAndroidDebugTest.finalizedBy "ciIntegrationTests"

这给了我一个错误

找不到属性“spoonDeltaAndroidDebugTest”

"spoonDeltaAndroidDebugTest".finalizedBy "ciIntegrationTests"

这导致

方法没有签名:java.lang.String.finalizedBy() 适用于参数类型:(java.lang.String) 值:[ciIntegrationTests]

有没有办法我们可以访问在运行时生成的build.gradle中的任务。

4

1 回答 1

0

用 tasks["taskName"] 包装你的任务字符串

tasks["spoonDeltaAndroidDebugTest"].finalizedBy tasks["ciIntegrationTests"]

参考: 关于任务的更多信息

于 2017-04-21T11:58:02.847 回答