我在build.gradle中具有以下内容:

def shouldExecute = { taskName ->
    def propertyName = "${taskName}.dryrun"

    !project.hasProperty(propertyName) || project[propertyName] != 'true'
}

gradle.taskGraph.useFilter({ task ->
    println("*********************** ${task.name}: ${shouldExecute(task.name)}")
    shouldExecute(task.name)
} as Spec)

但是,当我运行gradlew -Ptest.dryrun=true clean build时,看不到println的输出,并且test任务仍在执行。为什么useFilter不起作用?

最佳答案

这对我来说很好。我在上面的脚本中添加的唯一内容是task test。然后,我运行gradle test,带有和不带有-Ptest.dryrun=true。两次我都得到了预期的输出和行为。我想不出为什么它对您不起作用的充分理由。我建议从小处着手(我确定它会在这种情况下起作用),然后逐渐添加回去直到它停止工作为止。希望这将导致您找到问题的原因。

关于gradle - `gradle.taskGraph.useFilter`没有执行,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/18647790/

10-11 22:14
查看更多