Gradle4.7+配置annotationProcessor后Lombok编译报错求助
解决Gradle 4.7中Lombok配置后测试类@Slf4j编译错误的问题
嗨,我来帮你搞定这个问题!你遇到的编译错误,核心原因是Lombok的配置需要同时保留compileOnly/testCompileOnly和annotationProcessor/testAnnotationProcessor,两者缺一不可,下面给你详细拆解和解决方案:
问题根源
你之前把原有的compileOnly和testCompileOnly替换成annotationProcessor配置,但忽略了一个关键点:
compileOnly/testCompileOnly的作用是让编译器和IDE能找到Lombok的注解类(比如@Slf4j),相当于提供注解的"定义";annotationProcessor/testAnnotationProcessor的作用是告诉Gradle在编译阶段运行Lombok的注解处理器,生成对应的代码(比如自动创建log变量)。
如果只保留annotationProcessor,编译时会找不到@Slf4j这个注解的类定义,自然就会报"找不到符号"的错误。
正确的Lombok配置
在你的Gradle 4.7项目中,需要同时配置这两类依赖,主代码和测试代码要分开配置:
dependencies { // 主代码的Lombok配置 compileOnly 'org.projectlombok:lombok' annotationProcessor 'org.projectlombok:lombok' // 测试代码的Lombok配置 testCompileOnly 'org.projectlombok:lombok' testAnnotationProcessor 'org.projectlombok:lombok' // 额外提醒:如果测试类用@Slf4j,还要确保测试环境有Slf4j的实现(比如logback) testImplementation 'ch.qos.logback:logback-classic:1.2.11' // 其他测试依赖,比如JUnit testImplementation 'junit:junit:4.13.2' }
验证步骤
- 把上述配置更新到你的
build.gradle中; - 执行清理并重新编译:
gradlew clean build --warning-mode=all
这样就能解决编译错误,同时也不会再收到Lombok注解处理器过时的警告啦。
内容的提问来源于stack exchange,提问作者coderatchet
相关产品推荐
相关产品推荐

