Gradle 禁用自动Detekt在渐变中运行
我已经把它添加到我的Gradle项目中。我的意图是只在需要时调用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
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”)}