annotationProcessor gradle 4.7+配置不运行lombok

时间:2018-05-24 22:37:27

标签: 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 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

我错过了什么吗?

1 个答案:

答案 0 :(得分:17)

添加compileOnly / testCompileOnly配置

annotationProcessor('org.projectlombok:lombok')
compileOnly('org.projectlombok:lombok')
testAnnotationProcessor('org.projectlombok:lombok')
testCompileOnly('org.projectlombok:lombok')

根据documentation,annotationProcessor配置仍需要compileOnly(以及testCompileOnly测试类)配置才能运行。至于对增量注释处理的支持,龙目岛的实施者刚刚合并了对master的支持,但截至2018年5月25日尚未包含上线版本。

他们的最后一个版本16.2.20跨越提交到9th of Jan 2018并且Gradle更改被拉到了15th of May 2018的主人身上因此我怀疑新版本不会远离发布,尽管他们的'Edgy'版本不包含任何有关此功能的说明。