我在使用 gradle 4.7 项目时收到以下消息
The following annotation processors were detected on the compile classpath: 'lombok.launch.AnnotationProcessorHider$AnnotationProcessor' and 'lombok.launch.AnnotationProcessorHider$ClaimingProcessor'. Detecting annotation processors on the compile classpath is
Deprecated and Gradle 5.0 will ignore them. Please add them to the annotation processor path instead. If you did not intend to use annotation processors, you can use the '-proc:none' compiler argument to ignore them.
运行时
gradlew build --warning-mode=all
在具有以下 Gradle 配置的项目上
compileOnly('org.projectlombok:lombok')
testCompileOnly('org.projectlombok:lombok')
正如警告所示,建议将它们放在 annotationProcessor
(和 testAnnotationProcessor
)配置上,以便与 gradle 5.0 兼容
annotationProcessor('org.projectlombok:lombok')
testAnnotationProcessor('org.projectlombok:lombok')
但是,通过一个简单的测试:
@Slf4j
public class LombokTests {
@Test
public void lombokCompiles() {
log.info("foobar");
}
}
该配置失败:
> Task :compileTestJava FAILED
D:\Users\bobjones\repos\my-new-app\src\test\java\com\example\app\LombokTests.java:10: error: cannot find symbol
@Slf4j
^
symbol: class Slf4j
1 error
我错过了什么吗?
最佳答案
添加compileOnly
/testCompileOnly
配置
annotationProcessor('org.projectlombok:lombok')
compileOnly('org.projectlombok:lombok')
testAnnotationProcessor('org.projectlombok:lombok')
testCompileOnly('org.projectlombok:lombok')
<小时/>
根据documentation ,annotationProcessor 配置仍然需要 compileOnly
(以及用于测试类的 testCompileOnly
)配置才能运行。至于对增量注释处理的支持,Lombok 的实现者刚刚合并了对 master 的支持,但截至 2018 年 5 月 25 日尚未包含上线版本。
他们的最后一个版本 16.2.20 跨越提交直到 9th of Jan 2018 Gradle 更改已被拉入 15th of May 2018 上的 master 中所以我怀疑新版本距离发布不会太远,尽管他们的'Edgy'发行版不包含有关此功能的任何注释。
编辑 2020 年 10 月:
一个Gradle plugin is available by io.freefair它可以自动配置这些设置,并帮助使 lombok 保持最新(当然您可以自己覆盖 lombok 版本)。
关于gradle - annotationProcessor gradle 4.7+ 配置不运行 lombok,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50519138/