2016-02-25 32 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