代码之家  ›  专栏  ›  技术社区  ›  coderatchet

AnnotationProcessor Gradle 4.7+配置未运行Lombok

  •  6
  • coderatchet  · 技术社区  · 6 年前

    我在使用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
    

    在具有以下渐变配置的项目上

    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 回复  |  直到 6 年前
        1
  •  17
  •   coderatchet    6 年前

    添加 compileOnly / testCompileOnly 配置

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

    根据 documentation ,AnnotationProcessor配置仍需要 编译 (和) 测试编译 用于测试类)配置。至于对增量注释处理的支持,Lombok的实现者刚刚合并了对Master的支持,但截至2018年5月25日,还没有包括Go-Live版本。

    他们的最新版本16.2.20跨越提交,直到 9th of Jan 2018 而梯度变化被拉到主 15th of May 2018 所以我怀疑新版本离发布还不远,尽管他们 'Edgy' 版本不包括有关此功能的任何注释。