3

我已将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 特定的方式。

4

1 回答 1

4

有很多方法可以跳过任务。最简单的一种是为您的任务添加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

于 2019-11-28T01:51:51.580 回答