2013-10-29 152 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

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