升级Lombok Gradle插件至8.10后遇generateEffectiveLombokConfig依赖错误
解决Lombok Gradle插件升级后任务依赖冲突问题
升级Lombok Gradle插件从8.6到8.10版本后,Gradle抛出任务依赖错误,核心原因是新版本新增的generateEffectiveLombokConfig任务会扫描项目中的Java源码目录,但它未明确依赖生成OpenAPI客户端代码的generateClientCode任务,而后者的输出目录正是前者的扫描目标之一,违反了Gradle的增量构建依赖规则。
以下是几种可行的解决思路:
1. 明确声明任务依赖(推荐)
给generateEffectiveLombokConfig任务添加对generateClientCode的依赖,确保代码生成完成后再执行Lombok配置扫描。
Groovy DSL(build.gradle):
tasks.named('generateEffectiveLombokConfig') { dependsOn tasks.named('generateClientCode') }
Kotlin DSL(build.gradle.kts):
tasks.named<LombokConfig>("generateEffectiveLombokConfig") { dependsOn(tasks.named("generateClientCode")) }
这种方式完全符合Gradle的依赖管理规范,能保证任务执行顺序的正确性,同时支持增量构建。
2. 排除生成代码目录的扫描
如果OpenAPI生成的代码不需要Lombok处理,可以将生成目录从generateEffectiveLombokConfig的扫描范围中排除,避免任务间的依赖冲突。
Groovy DSL:
tasks.named('generateEffectiveLombokConfig') { // 使用相对路径保证跨环境兼容性 exclude 'build/openapi-source/src/main/java' }
Kotlin DSL:
tasks.named<LombokConfig>("generateEffectiveLombokConfig") { exclude("build/openapi-source/src/main/java") }
3. 强制指定任务执行顺序(临时方案)
如果只是需要临时保证任务执行顺序,可使用mustRunAfter声明,但这种方式仅保证顺序,不建立真正的依赖关系,不推荐长期使用。
Groovy DSL:
tasks.named('generateEffectiveLombokConfig') { mustRunAfter tasks.named('generateClientCode') }
Kotlin DSL:
tasks.named<LombokConfig>("generateEffectiveLombokConfig") { mustRunAfter(tasks.named("generateClientCode")) }
内容的提问来源于stack exchange,提问作者kellyfj
相关产品推荐
相关产品推荐

