在Gradle项目中,需用annotationProcessor配置引入编译期注解处理器(如Lombok),禁止用implementation;Java模块需应用java插件、设置兼容Java版本,并在sourceSets中添加生成目录为源根以供IDE识别。

在 Gradle 项目中通过 annotationProcessor 配置第三方编译期注解处理器,核心是让编译器(javac)在编译阶段加载并执行对应的 Processor 类,同时确保生成的代码能被 IDE 正确识别和参与编译。
添加 annotationProcessor 依赖
在模块级 build.gradle(或 build.gradle.kts)的 dependencies 块中,使用 annotationProcessor 配置项引入处理器 JAR:
- 对 Java/Kotlin 普通模块,直接写:
dependencies {
implementation 'com.google.guava:guava:33.2.1-jre'
annotationProcessor 'org.projectlombok:lombok:1.18.34'
compileOnly 'org.projectlombok:lombok:1.18.34' // 推荐同时加 compileOnly,避免运行时依赖
}
- 如果是 Android 项目,用
annotationProcessor(旧版 AGP)或compileOnly+kapt(Kotlin);但纯 Java Gradle 项目只用annotationProcessor即可。 - 注意:不要用
implementation引入处理器——它只应在编译期存在,不应打包进最终产物。
启用 Gradle 的注解处理支持
Gradle 默认开启注解处理,但需确认以下两点:
- Java 插件已应用:
plugins { id 'java' }(或id 'org.jetbrains.kotlin.jvm'等) - Java 版本兼容:在
java { sourceCompatibility = JavaVersion.VERSION_17 }中设为 ≥ 注解处理器要求的版本(如 Lombok 要求 JDK 11+) - 无需额外开启
options.annotationProcessing = true—— Gradle 6.0+ 默认启用
确保生成代码被正确识别(IDEA 关键一步)
即使 Gradle 编译成功生成了代码(如 build/generated/sources/annotationProcessor/java/main/),IntelliJ IDEA 默认不将其视为源码根目录,会导致“找不到符号”错误:
- 手动标记:右键该生成目录 → Mark as Generated Sources Root
- 更推荐自动化方式(在
build.gradle中):
sourceSets {
main {
java {
srcDirs += "$buildDir/generated/sources/annotationProcessor/java/main"
}
}
}
这样每次构建后,IDEA 会自动识别新生成的类,支持跳转、补全和编译依赖。
验证是否生效
最直接的验证方式:
- 添加一个该处理器支持的注解(如
@Data来自 Lombok) - 执行
./gradlew compileJava,观察是否无报错且生成了对应方法字节码(可通过反编译build/classes下 class 文件确认) - 在 IDEA 中检查是否出现 getter/setter 补全提示,且无红色报错
- 若使用自定义 Processor,检查
META-INF/services/javax.annotation.processing.Processor是否在 JAR 包内正确声明实现类
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











