Gradle 2.14
我将自定义任务写为“运行”
task run() {
def allVariantList = [];
android.applicationVariants.all { variant ->
allVariantList.add(variant.getName())
println "Current allVariantList = " + allVariantList
}
println "Result allVariantList = " + allVariantList
}
开始我的任务: gradlew run
结果:
结果allVariantList = []
当前allVariantList = [prod_no_check]
当前allVariantList = [prod_no_check,prod]
当前allVariantList = [prod_no_check,prod,stage]
当前allVariantList = [prod_no_check,prod,stage,dev]
当前allVariantList = [prod_no_check,prod,stage,dev,release]
当前allVariantList = [prod_no_check,prod,stage,dev,release,dev_no_check]
问题:
println“当前allVariantList =” + allVariantList 。我该怎么做?
最佳答案
我认为问题在于,在配置任务时(您在配置时(而不是执行时)完成所有工作,android插件尚未配置applicationVariants
。applicationVariants.all
在所有已添加的变体上运行,并且在将来添加的所有变体中添加。
因此,您的输出将建议在配置时尚未设置任何变体,因此结果打印为空,而其他结果则在创建变体之后出现。
当您在配置时执行所有操作时,即使您不执行任务,也将始终执行该操作。如果调用gradlew help
或其他任何内容,您将获得相同的输出。
因此,要么在执行阶段执行所有代码(将其包装在doLast { }
闭包中),要么至少在执行阶段进行结果打印。如果您需要在执行阶段之前完成工作,并且独立于任务是否实际运行,则可以将结果打印至少包装在afterEvaluate { }
闭包中,该闭包在评估项目后执行,但仍处于配置阶段。