Android - 如何定义在创建taskGraph之后生成的gradle任务的依赖性

时间:2016-02-25 10:58:04

标签: android gradle android-gradle spoon spoon-gradle-plugin

更新

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

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行。)

原始问题

我有一个spoon任务,它是在运行时(生成任务图)时构建的,具体取决于我的应用程序风格。例如任务“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 中的任务。

1 个答案:

答案 0 :(得分:0)

用任务[" taskName"]

包裹你的任务字符串

// private const int DEFAULT_CHARGE = 200; <-- is not used anymore public int DefaultCharge { get { return SomeSortOfFileOrDatabaseConfiguration.DefaultCharge; } }

参考: More About Tasks