Gradle针对lombok的注解处理器警告已经被弃用。

31

升级到gradle 4.7后,我之前没有警告的构建现在出现了以下警告:

在编译类路径上检测到以下注释处理器:'lombok.launch.AnnotationProcessorHider $ AnnotationProcessor'和 'lombok.launch.AnnotationProcessorHider $ ClaimingProcessor'。 在编译类路径上检测注释处理器已经过时,Gradle 5.0将忽略它们。请将它们添加到注释处理器路径中。如果您没有意图使用注释处理器,则可以使用“-proc:none”编译器参数来忽略它们。

看起来注释处理器已经过时,gradle版本5.0将不再支持注释处理器。

我的项目使用lombok, 它需要注释处理器,因此使用 -proc:none 不是一个选项。当版本5.0发布后停止使用Gradle也不是一个选项。

如何:

  • 停止警告,并且
  • 确保我的项目将继续与未来的Gradle版本构建?
3个回答

41
将lombok依赖项类型从compile更改为annotationProcessor,因此您的build.gradle文件中的依赖项部分应如下所示:
dependencies {
    compileOnly('org.projectlombok:lombok:1.16.20')
    annotationProcessor 'org.projectlombok:lombok:1.16.20'
    // compile 'org.projectlombok:lombok:1.16.20' <-- this no longer works!
    // other dependencies...
}

1
当我这样做时,我得到的是:"在类型为 org.gradle.api.internal.artifacts.dsl.dependencies.DefaultDependencyHandler 的对象上,找不到参数 [org.projectlombok:lombok:1.16.20] 的 annotationProcssor() 方法。" - JeffH
3
是的,目前为止,由于Lombok没有为其API(注释)和注释处理器发布单独的jar文件,因此您必须将该jar文件添加到“compile”和“annotationProcessor”依赖项配置中。 - Ben M
我得到了以下错误信息:找不到compileOnly()方法。 - BriOnH
@BriOnH,你使用的Gradle和Java版本是什么? - Bohemian

29

如果你的项目包含测试,那么你需要以下配置才能完全摆脱Gradle警告:

dependencies {
  compileOnly "org.projectlombok:lombok:1.18.2"
  testCompileOnly "org.projectlombok:lombok:1.18.2"
  annotationProcessor "org.projectlombok:lombok:1.18.2"
  testAnnotationProcessor "org.projectlombok:lombok:1.18.2"
}

调整lombok版本以适应。


仍然相关。升级到Java 11后,似乎唯一能解决我的构建问题的方法。 - Joe Berg

8

Gradle在4.6版本中增加了annotationProcessor,而Lombok是一个注解处理器,虽然他们的文档并没有很明确地说明这一点,但当使用Gradle时,他们也意识到了这一点,并推荐在使用Android Studio时使用它。简短的答案是使用:

dependencies {
    compileOnly('org.projectlombok:lombok:1.18.0')
    annotationProcessor('org.projectlombok:lombok:1.18.0')
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接