由Gradle调用preDebugBuild和preReleaseBuild

时间:2016-04-20 15:11:36

标签: android gradle

我正在尝试为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任务。

这怎么可能?

1 个答案:

答案 0 :(得分:0)

在配置阶段执行块。如果您希望将代码块推迟到执行阶段进行评估,那么您可以使用这样的模式

task setDebug(dependsOn: 'preDebugBuild') << {
    // ...
}

这将等到任务的实际执行而不是任务的配置来评估闭包。

当前执行此操作的方式将导致每次执行gradle时都会评估两个代码块。例如,如果您刚刚运行gradle而未指定任务,则会在日志中看到两个println语句。无论任务如何,使用<<都可以解决您正在评估的闭包问题。