我正在尝试为Android安装一个调试版本的库。
我已在我的gradle脚本中设置了此代码:
task setDebug(dependsOn: 'preDebugBuild') {
project.ext.set("pathType", "debug")
println('DEBUG')
}
task setRelease(dependsOn: 'preReleaseBuild') {
project.ext.set("pathType", "release")
println('RELEASE')
}
事情是,当我使用gradle时:
gradle assembleDebug
DEBUG和RELEASE都打印在屏幕上,因此我的pathType变量始终是'release'。但是在gradle输出中,我只能看到调用的Debug任务。
这怎么可能?
答案 0 :(得分:0)
在配置阶段执行块。如果您希望将代码块推迟到执行阶段进行评估,那么您可以使用这样的模式
task setDebug(dependsOn: 'preDebugBuild') << {
// ...
}
这将等到任务的实际执行而不是任务的配置来评估闭包。
当前执行此操作的方式将导致每次执行gradle时都会评估两个代码块。例如,如果您刚刚运行gradle
而未指定任务,则会在日志中看到两个println
语句。无论任务如何,使用<<
都可以解决您正在评估的闭包问题。