我有一个Kotlin Gradle项目,我将Lombok添加为依赖项,并在kapt中注册了它
compileOnly("org.projectlombok:lombok:$lombokVersion")
kapt("org.projectlombok:lombok:$lombokVersion")
我想使用@Slf4j
annotation来自动生成日志记录器。它适用于Java类,但不适用于Kotlin类。
现在一起使用Kotlin和Lombok是可能的吗?如果我用@Slf4j
注解一个Kotlin类并在其中使用log
,我得到
未解析的引用:原木
显然,没有应用注解处理。
8条答案
按热度按时间wljmcqd81#
Lombok不是在源代码上运行的,而是在AST上运行的。无论如何,它是一个注解处理器,由Java编译器在编译时运行。Kotlin编译器不使用这些注解处理器。另请参见直接从马嘴里得到的答案https://stackoverflow.com/a/35530223/2621917。
kdfy810k2#
不能使用注解
@Slf4j
,而是在所需的类中手动创建其对象。参考https://www.reddit.com/r/Kotlin/comments/8gbiul/slf4j_loggers_in_3_ways/
2o7dmzc53#
如果您只想使用Lombok来实现@Slf4j,那么我建议您改用kotlin-logging:https://github.com/MicroUtils/kotlin-logging
它是slf 4j的一个简单 Package 器,因此不用
@Slf4j
注解类,而是用途:at0kjp5o4#
它不受支持,而且,从外观上看,it isn't going to be。
mv1qrgav5#
从带有K2编译器的Kotlin1.7.20开始,这是可能的。
https://kotlinlang.org/docs/whatsnew1720.html#support-for-kotlin-k2-compiler-plugins
b09cbbtk6#
对于日志记录,我所能做的最好的事情--因为
@Slf4j
不起作用--就像创建抽象日志类一样:和用途:
t3irkdon7#
Lombok的构建器注解支持已于2022年12月下旬添加到kotlin 1.8中。
您可以在这里学习如何配置插件。
简而言之,添加
添加到您的Groovy/Gradle文件和/或take a look at the sample project。
6bc51xsx8#
如果没有lombok团队的额外支持,我无法想象它会如何工作。Lombok基于注解处理,因此它在编译时运行,并在源代码上运行,所以我猜它采用了Java的语法。