如何与Kapt3一起使用lombok

当我尝试使用Kapt3运行Java和Kotlin android应用程序时:

apply plugin: 'kotlin-kapt' 

javac编译失败,无数

 error: cannot find symbol 

为生成的方法。

这可能是由于kapt无法生成存根导致的:

  'kapt.generateStubs' is not used by the 'kotlin-kapt' plugin 

所有前面提到的强迫我使用旧的kapt我可以使用:

 compileOnly "org.projectlombok:lombok:$lombokVer" annotationProcessor "org.projectlombok:lombok:$lombokVer" kapt "org.projectlombok:lombok:$lombokVer" kapt { generateStubs = true } 

然而这在测试编译期间导致失败,因为我也使用数据绑定库:

出了什么问题:执行任务失败:app:compileXDebugUnitTestJavaWithJavac’。 java.lang.RuntimeException:无法解析数据绑定编译器选项。 参数:kapt.annotations:… \ app \ build \ tmp \ kapt \ xDebugUnitTest \ wrappers \ annotations.bscplayDebugUnitTest.txt kapt.kotlin.generated:… \ app \ build \ tmp \ kapt \ xDebugUnitTest \ kotlinGenerated

另一方面,这迫使我使用Kapt3,如下所述: android databinding unit test error无法解析数据绑定编译器选项。

有谁知道如何解决这个问题与龙目岛? 我只是暗示使用我的第一个解决方案,但它导致了数据绑定问题(根据Kotlin支持·问题#1169·rzwitserloot / lombok·GitHub )

注意:Android studio 2.3.3和Android Studio 3(使用gradle build tools 3.0.0)的情况是一样的。

正如@yanex在评论中所解释的那样:

不幸的是,Kotlin与Lombok不兼容,因为它使用私有的javac API来完成它的工作。 尽管kapt3构建在Java编译器之上,但kapt为Kotlin类生成Java存根,因此Lombok可以处理的是存根,而不是原始类。 顺便说一下,原来的kapt已经被弃用,在Kotlin 1.2发布之后不久就会被移除。 所以你有一些时间迁移到Kotlin&kapt3。