Gradle 禁用自动Detekt在渐变中运行

Gradle 禁用自动Detekt在渐变中运行,gradle,kotlin,gradle-kotlin-dsl,detekt,Gradle,Kotlin,Gradle Kotlin Dsl,Detekt,我已经把它添加到我的Gradle项目中。我的意图是只在需要时调用detekt,因为它会产生很多误报。但是,默认情况下,detekt任务处于活动状态(并中断构建)。如何避免这种依赖关系 我尝试的内容:我添加了一个gradle.taskGraph.beforeTask块,该块有条件地设置enabled=false: gradle.taskGraph.beforeTask { val containsDetektTaskCall = gradle.startParameter.taskName

我已经把它添加到我的Gradle项目中。我的意图是只在需要时调用
detekt
,因为它会产生很多误报。但是,默认情况下,
detekt
任务处于活动状态(并中断构建)。如何避免这种依赖关系

我尝试的内容:我添加了一个
gradle.taskGraph.beforeTask
块,该块有条件地设置
enabled=false

gradle.taskGraph.beforeTask {
    val containsDetektTaskCall = gradle.startParameter.taskNames.contains("detekt")
    if (name.startsWith("detekt") && !containsDetektTaskCall) {
        logger.lifecycle("Skipping all 'detekt-plugin' tasks")
        enabled = false
    }
}

我觉得这7行代码实际上有点太多,只是为了覆盖任务依赖关系。我希望你能给我一个大致的答案,同时也能给我一些具体的方法。

有很多方法可以跳过这项任务。 最简单的方法是仅在任务的条件下添加
。
例如:

task detect {
    doFirst {
        println 'detect'
    }
}

detect.onlyIf { project.hasProperty('runDetect') }
只有当
onlyIf
条件为真时,才会执行
detect
任务

./gradlew detect -PrunDetect

请在这里查看详细信息

以供参考:对于Kotlin DSL,它是
tasks.getByPath(“detekt”).onlyf{project.hasProperty(“runDetekt”)}
。更好的是,因为再添加一个命令行参数很难:
tasks.getByPath(“detekt”).onlyf{gradle.startParameter.taskNames.contains(“detekt”)}