Gradle能够在其他任务之后运行任务。语法是taskY.mustRunAfter taskX。android gradle插件说它定义的ApplicationVariant 任务之一是packageApplication。
在我的build.gradle中,我有 taskX.mustRunAfter packageApplication
我得到的错误是"在项目':someproject'上找不到属性'包应用程序'。
甚至有可能访问包应用程序任务吗?如果是这样,这是否被视为不良做法?
我找到了答案。 rciovati澄清了围绕mustRunAfter的困惑,我所做的是错误的方法。我最终将taskY转换为时髦的功能。然后使用以下代码:
android.applicationVariants.all { variant ->
// rename apk after we assemble the application
variant.assemble.doLast {
taskY(variant)
}
请注意文档中的这句话:
通过使用"必须在以下时间后运行"排序规则,您可以指定任务B 必须始终在任务 A 之后运行,只要任务 A 和任务 B 都 计划执行。
这意味着
taskX.mustRunAfter packageApplication
不会使taskX
总是在packageApplication
后运行,而只是当您键入以下内容时:
./gradlew taskX packageApplication
另一方面,它没有定义依赖关系,也就是说它不会自动运行taskX
任务。
要执行某些操作,在执行任务后,您可以使用doLast
闭包:
taskX.doLast{ println 'Hello' }
packageApplication
是ApplicationVariant
类的属性,但不是任务。任务package<VariantName>
.