从 java 10 升级到 java 11,从 gradle 4.10 升级到 gradle。 5.2: "Variable not initialized in the default constructor"

Upgrading from java 10 to java 11 and gradle 4.10 to gradle. 5.2: "Variable not initialized in the default constructor"

我有一个简单的对象:

@Value
@Builder
public class User implements Serializable {
    private final String userId;
    private final String email;
    private final String name;
}

除了我在这里使用 Lombok 1.18.2 作为 @Value@Builder 注释之外,这里没有什么神奇之处。 Java 10 和 Gradle 4.10 一切正常。现在我升级到 Java 11 和 Gradle 5.2 突然我得到:

> Task :application:compileJava
/src/application/src/main/java/com/rbb/tutor/user/model/User.java:12: error: variable userId not initialized in the default constructor
    private final String userId;
                         ^
/src/application/src/main/java/com/rbb/tutor/user/model/User.java:13: error: variable email not initialized in the default constructor
    private final String email;
                         ^
/src/application/src/main/java/com/rbb/tutor/user/model/User.java:14: error: variable name not initialized in the default constructor
    private final String name;
                         ^

我真的不知道在这里做什么。一开始我以为是 lombok 的问题,但我升级到支持 java 11 的 1.18.6。现在我不知道出了什么问题。

在gradle5中,需要单独列出注解处理器。也许这就是问题所在?

可在此处找到示例 gradle 构建:

https://projectlombok.org/setup/gradle

Gradle 5 release has new annotationProcessor() configuration for dependencies (lombok issue)

按如下方式更改您的 build.gradle

annotationProcessor("org.projectlombok:lombok:1.18.6")
compileOnly("org.projectlombok:lombok:1.18.6")

或使用推荐的插件 - https://plugins.gradle.org/plugin/io.freefair.lombok

plugins {
  id "io.freefair.lombok" version "3.1.0"
}