注释处理器gradle 4.7+;配置不正确';不要跑龙目山

注释处理器gradle 4.7+;配置不正确';不要跑龙目山,gradle,lombok,Gradle,Lombok,我在处理gradle 4.7项目时收到以下消息 The following annotation processors were detected on the compile classpath: 'lombok.launch.AnnotationProcessorHider$AnnotationProcessor' and 'lombok.launch.AnnotationProcessorHider$ClaimingProcessor'. Detecting annotation proc

我在处理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配置仍然需要
compileOnly
(对于测试类,
testCompileOnly
)配置才能运行。至于对增量注释处理的支持,Lombok的实现者刚刚合并以支持master,但截至2018年5月25日,还没有包括上线版本

他们的上一个版本16.2.20直到和Gradle的更改被拉到主版本上,所以我怀疑新版本离发布不远了,尽管他们的发布没有包含任何关于此功能的说明

2020年10月编辑:
一个可以更自动地配置这些设置并帮助lombok保持最新(当然您可以自己覆盖lombok版本)。

我认为它应该是
compileOnly
testCompileOnly
用于lombok,因为注释在运行时不可用。有关更多信息,请参见此。感谢@Brice的建议,我会尝试一下并阅读答案,然后在适当的情况下编辑我的回答:我忘了说,否则,
实现
/
编译
会将lombok导出为可传递依赖项或在运行时导出,这是错误的,因为lombok应该只在编译类路径上可用,而不是运行时类路径或lib消费者。@coderatchet非常感谢您的回答。这帮了大忙
annotationProcessor('org.projectlombok:lombok')
compileOnly('org.projectlombok:lombok')
testAnnotationProcessor('org.projectlombok:lombok')
testCompileOnly('org.projectlombok:lombok')