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.projectlombok</groupid>
<artifactid>lombok</artifactid>
<version>1.18.22</version>
<scope>provided</scope>
</dependency>多模块项目的所有 lombok 都应该进行升级
原始类型boolean下isxxx不生效
原始类型的布尔类型中的 get() 方法是由 is 开头的 (java beans 规定)
- 在 bean 类中, 不要使用原始类型
- 不要用 is 开头, 设置属性值
@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 下 lombok 不生效
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 测试的需要单独加入
}
批量 delombok
操作方法比较隐蔽, 记录一下
在 idea 中可以选中包名 (路径), 然后将该包下的所有使用 lombok 注解的类, 转换为普通类,
- 选中包名
ctrl+shift+a调出 action 面板- 输入 delombok
- 选中 all lombok annotations

gradle下发布源码包报错
library source does not match the bytecode for class xxx
![]()
解决方法是改用插件方式引入 lombok (之前是依赖方式)
- 使用 lombok 官方插件 https://plugins.gradle.org/plugin/io.freefair.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"
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持代码网。
发表评论