我已经将Detekt添加到我的Gradle项目中。我的意图是仅按需调用detekt
,因为它会产生很多误报。但是,detekt
任务默认情况下处于 Activity 状态(并中断了构建)。如何避免这种依赖性?
我尝试了什么:我添加了一个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
条件为true时,才会执行onlyIf
任务。./gradlew detect -PrunDetect
请在这里查看详细信息https://docs.gradle.org/current/userguide/more_about_tasks.html#sec:skipping_tasks