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.现在我没有新的想法什么是错的.
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)