我有两个任务,一个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')
}
}
正如我之前所说,这并没有满足我的要求,即将任务test
和poeditorPull
排在assemble*Release
之前
我该怎么办?
答案 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抱歉浪费您的时间,但谢谢您