Gradle具有在其他任务之后运行任务的能力。语法为taskY.mustRunAfter taskX。 android gradle插件说它定义的ApplicationVariant任务之一是packageApplication。
在我的build.gradle中,我有
taskX.mustRunAfter packageApplication
我得到的错误是“无法在项目中找到属性'packageApplication':someproject'。”
是否可以访问packageApplication任务?如果这样被认为是不好的做法?
答案 0 :(得分:8)
我找到了答案。 rciovati清除了围绕mustRunAfter的混乱,我正在做的是错误的做法。 我最终将taskY转换为groovy函数。然后使用以下代码:
android.applicationVariants.all { variant ->
// rename apk after we assemble the application
variant.assemble.doLast {
taskY(variant)
}
答案 1 :(得分:1)
请注意文档中的这句话:
通过使用“必须运行”排序规则,您可以指定该任务B. 必须始终在taskA之后运行,只要taskA和taskB都运行 计划执行。
这意味着
taskX.mustRunAfter packageApplication
不会使taskX
始终在packageApplication
之后运行,但只要您键入:
./gradlew taskX packageApplication
另一方面,它没有定义依赖关系,也就是说它不会自动运行taskX
任务。
要执行某些操作,执行任务后您可以使用doLast
闭包:
taskX.doLast{ println 'Hello' }
packageApplication
是ApplicationVariant
类的属性,但不是任务。任务是package<VariantName>
。