Lombok
不生效在 build/rebuild
时,提示 Lombok 不生效:
java: You aren’t using a compiler supported by lombok, so lombok will not work and has been disabled.
或
java: JPS incremental annotation processing is disabled. Compilation results on partial recompilation may be inaccurate. Use build process "jps.track.ap.dependencies" VM flag to enable/disable incremental annotation processing environment.
第二种显示,附加代码的注解会失效,通过设置属性 -Djps.track.ap.dependencies 来启用或禁用(通常的解决办法是设为 false)
使用的lombok版本和idea版本不兼容。idea新版本是使用代理的方式来进行编译。(IDE层面的问题,通常是不推荐修改的)
升级lombok版本为最新版~
<dependency>
<groupId>org.projectlombokgroupId>
<artifactId>lombokartifactId>
<version>1.18.22version>
<scope>providedscope>
dependency>
多模块项目的所有 lombok 都应该进行升级
boolean
下 isXXX
不生效原始类型的布尔类型中的 get()
方法是由 is 开头的 (Java Beans 规定)
@Data
public class TestBody {
private boolean flag;
private boolean flag0;
private boolean isFlag1; // 会生成 isFlag1() 方法, 变相忽略掉了 is 前缀
private Boolean flag2;
public boolean isFlag0() {
return flag0;
}
public void setFlag0(boolean flag0) {
this.flag0 = flag0;
}
}
Gradle 相比 Maven 需要再补充一个依赖项, 叫 annotationProcessor
annotationProcessor
到 dependencies
中repositories {
mavenCentral()
}
dependencies {
compileOnly 'org.projectlombok:lombok:1.18.32'
annotationProcessor 'org.projectlombok:lombok:1.18.32' // add
testCompileOnly 'org.projectlombok:lombok:1.18.32' // 测试的需要单独加入
testAnnotationProcessor 'org.projectlombok:lombok:1.18.32' // add 测试的需要单独加入
}
操作方法比较隐蔽, 记录一下
在 idea 中可以选中包名 (路径), 然后将该包下的所有使用 Lombok 注解的类, 转换为普通类,
Library source does not match the bytecode for class XXX
解决方法是改用插件方式引入 lombok (之前是依赖方式)
plugins {
id "io.freefair.lombok" version "8.6"
}
(如果找不到依赖, 使用下面的方式加镜像)
buildscript {
repositories {
maven {
url "https://plugins.gradle.org/m2/"
}
}
dependencies {
classpath "io.freefair.gradle:lombok-plugin:8.6"
}
}
apply plugin: "io.freefair.lombok"
(完)