在执行组装释放之前执行多个任务

时间:2018-09-18 06:58:11

标签: android gradle android-gradle

我有两个任务,一个test任务和一个poeditorPull任务(从poeditor-api中提取最新的字符串),我希望我的assembleRelease任务在两者都完成之后运行

到目前为止,我已经使用过task.dependsOn,但是昨天我发现gradle在poeditorPull任务完成之前完成了apk的构建

tasks.whenTaskAdded { task ->
  if (task.name == 'assembleInternalRelease' || task.name == 'assembleProductionRelease') {
    task.dependsOn('test')
    task.dependsOn('poeditorPull')
  }
}

正如我之前所说,这并没有满足我的要求,即将任务testpoeditorPull排在assemble*Release之前

我该怎么办?

2 个答案:

答案 0 :(得分:1)

我已将措词改写得更简洁明了...

问题在于assemble*任务是由Android插件动态创建的,因此在您的构建脚本中您无法直接引用这些任务。您应该使用afterEvaluate块:它将在创建所有任务之后执行,因此您将能够创建从'assembleInternalRelease'到您自己的任务的依赖关系

afterEvaluate { project ->
    assembleInternalRelease.dependsOn tasks.getByName('test')
    // or tasks.getByName('assembleInternalRelease').dependsOn tasks.getByName('test')
}

答案 1 :(得分:1)

事实证明,代码可以正常工作,但是由于该插件可以异步运行,因此不可能让我的任务等待完成

@ M.Ricciuti抱歉浪费您的时间,但谢谢您