是否可以将 Lombok 与 Kotlin 一起使用?

Is it possible to use Lombok with Kotlin?

我有一个 Kotlin Gradle 项目。我将 Lombok 添加为依赖项,并使用 kapt

注册了它
compileOnly("org.projectlombok:lombok:$lombokVersion")
kapt("org.projectlombok:lombok:$lombokVersion")

我只想使用 @Slf4j 注释来自动 log 生成。它适用于 Java 类 但不适用于 Kotlin 的。

现在是否可以同时使用 Kotling 和 Lombok?

编辑:添加更多详细信息

如果我用 @Slf4j 注释 Kotlin 类并在其中使用 log 我得到

Unresolved reference: log

显然没有应用注释处理。

如果没有 lombok 团队的额外支持,我不知道它会如何工作。 Lombok 基于注解处理,因此它在编译时运行并在您的源代码上运行,所以我猜它采用了 Java 的语法。

Lombok 不 运行 在您的源代码上,而是在 AST 上。无论如何,它是 Java 编译器在编译时 运行 的注解处理器。 Kotlin 编译器不使用这些注解处理器。又见马嘴里的答案

它不受支持,从外观上看,it isn't going to be

如果你想使用 Lombok 只是为了@Slf4j,那么我建议你改用 kotlin-logging:https://github.com/MicroUtils/kotlin-logging

您不能使用注解 @Slf4j,但需要在 class 中手动创建其对象。

参考https://www.reddit.com/r/Kotlin/comments/8gbiul/slf4j_loggers_in_3_ways/

为了记录我能做的最好的 - 因为 @Slf4j 没有工作 - 就像创建抽象日志 class 比如:

package org.example

import org.slf4j.LoggerFactory
import org.slf4j.Logger

abstract class Log {
    val log: Logger = LoggerFactory.getLogger(this.javaClass)
}

和用法:

package org.example

class MyClass { 
    companion object : Log() {}
    @Test
    fun someFun() {
        log.info("Logging info")
    }
}