在 Gradle 中禁用自动检测 运行

Disable automatic Detekt run in Gradle

我已将 Detekt 添加到我的 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行代码真的有点多只是为了覆盖一个任务依赖。我将不胜感激一般的 Gradle 回答以及一些特定于 Detekt 的方式。

有很多方法可以跳过任务。 最简单的方法是为您的任务添加 onlyIf 条件。 例如:

task detect {
    doFirst {
        println 'detect'
    }
}

detect.onlyIf { project.hasProperty('runDetect') }

detect任务只有在onlyIf条件为真时才会执行

./gradlew detect -PrunDetect

详情请看这里https://docs.gradle.org/current/userguide/more_about_tasks.html#sec:skipping_tasks