从java 10升级到java 11并将gradle 4.10升级到gradle.5.2:"默认构造函数中未初始化变量"

Mul*_*ard 5 java gradle lombok java-10 java-11

我有一个简单的对象:

@Value
@Builder
public class User implements Serializable {
    private final String userId;
    private final String email;
    private final String name;
}
Run Code Online (Sandbox Code Playgroud)

这里没有魔法,除了我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;
                         ^
Run Code Online (Sandbox Code Playgroud)

我真的不知道该怎么做.首先我认为这是lombok的一个问题,但我升级到1.18.6支持java 11.现在我没有新的想法什么是错的.

Mik*_*kov 6

Gradle 5 版本具有新annotationProcessor()的依赖项配置(lombok 问题

更改您的build.gradle如下:

annotationProcessor("org.projectlombok:lombok:1.18.6")
compileOnly("org.projectlombok:lombok:1.18.6")
Run Code Online (Sandbox Code Playgroud)

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

plugins {
  id "io.freefair.lombok" version "3.1.0"
}
Run Code Online (Sandbox Code Playgroud)


rzw*_*oot 3

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

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

https://projectlombok.org/setup/gradle