在 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
我已将 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