2016-02-25 35 views
0

UPDATEAndroid的 - 如何在创建

后taskGraph我可以在运行时获得任务的保持其产生gradle这个任务定义扶养。但我无法完成另一项任务。我使用的代码是:

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" 
     } 
    } 
} 

}

但是,仍然任务 “ciIntegrationTests” 当 “spoonFreeDebugAndroidTest” 失败,没有得到执行。根据我的应用程序香精(println的行获取虽然打印。)

原来的问题

我这是在运行时(当生成的任务图)内置了spoon任务。例如一个任务“spoonFreeAndroidDebugTest”是在运行时生成的,并且在build.gradle中无法访问。

我想在此任务上添加依赖关系,以便即使某些其他任务失败时也执行此任务。我尝试这些方法:

spoon.finalizedBy "ciIntegrationTests" 

这给了我这个错误

找不到方法finalizedBy()对[email protected]参数[ciIntegrationTests。

spoonFreeAndroidDebugTest.finalizedBy "ciIntegrationTests" 

这给了我一个错误

找不到属性 'spoonDeltaAndroidDebugTest'

"spoonDeltaAndroidDebugTest".finalizedBy "ciIntegrationTests" 

这导致

方法的无签名:java.lang.String.finalizedBy()是适用于参数类型:(java.lang.String中)的值:[ciIntegrationTests]

是有一种方法可以访问在运行时生成的build.gradle中的任务。

+0

没有在您的其他问题的帮助的答案? http://stackoverflow.com/questions/35596011/could-not-find-property-uninstalldebug-on-project – RaGe

+0

@RaGe号我试着'whenReady'导致*找不到属性'spoonFreeAndroidDebugTest'对项目':应用”。*代码片段如下: 'gradle.taskGraph.whenReady {taskGraph - > taskGraph。 如果(taskGraph.hasTask(spoonFreeDebugAndroidTest)){ spoonFreeAndroidDebugTest.finalizedBy “ciIntegrationTests” } }' – Rajkiran

+0

@RaGe我已经更新的问题。 – Rajkiran

回答

0

包装你的任务字符串的任务[ “TASKNAME”]

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

参考: More About Tasks