2013-10-29 194 views
0

如何執行匿名Gradle任務?執行匿名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任務完成。

什麼是正確的方法來做到這一點?

回答

3

有作爲一個匿名的任務沒有這樣的事情,但你可以改用常規(命名)任務:

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

+0

我應該如何將'variant.packageName'傳遞給該任務? –

+0

我更新了我想要實現的問題。 –

+0

相應地更新了我的答案。 –