TaskGraph.useFilter替代Kotlin DSL

我正在从gradle中寻找这行代码的替代品,而我正在kotlin dsl中寻找其对立部分,有人可以对此有所了解,因为它对我来说阻止了构建,并且由于usefilter不可用而感到困惑在Kotlin dsl

gradle.taskGraph.useFilter {
    if (task.name.contains("GoogleServices") && (task.name.contains("Perf") || task.name.contains("Demo") || task.name.contains("Dev") || task.name.contains("Debug"))) {
        return false
    }
    return true
}
baodaozhai 回答:TaskGraph.useFilter替代Kotlin DSL

useFilter是在非公共接口TaskExecutionGraphInternal中声明的方法,该接口是公共TaskExecutionGraph的子类型,由实际任务图实现类实现。

由于动态分配,对useFilter的调用在Groovy中起作用:它在运行时在实际类的所有方法中搜索,因此甚至可以调用那些通过公共API无法使用的方法。

在Kotlin中,必须将任务图强制转换为该接口,才能静态调用此方法:

(gradle.taskGraph as org.gradle.execution.taskgraph.TaskExecutionGraphInternal)
    .useFilter { it.name.contains("GoogleServices") && ... }

请注意,使用非公开的Gradle API会使您的构建脆弱并且对升级Gradle的版本敏感。

本文链接:https://www.f2er.com/3099097.html

大家都在问