lombok 不生效
0 问题
在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)
1 问题原因
使用的lombok版本和idea版本不兼容。idea新版本是使用代理的方式来进行编译。(IDE层面的问题,通常是不推荐修改的)
2 解决办法
升级lombok版本为最新版~
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.22</version>
<scope>provided</scope>
</dependency>
多模块项目的所有lombok都应该进行升级
Gradle 下 lombok 不生效
需要添加 annotationProcessor 到 dependencies 中
repositories {
mavenCentral()
}
dependencies {
compileOnly 'org.projectlombok:lombok:1.18.32'
annotationProcessor 'org.projectlombok:lombok:1.18.32'
testCompileOnly 'org.projectlombok:lombok:1.18.32'
testAnnotationProcessor 'org.projectlombok:lombok:1.18.32'
}
如何批量 Delombok
操作方法比较隐蔽, 记录一下
在 idea 中可以选中包名 (路径), 然后将该包下的所有使用 Lombok 注解的类, 转换为普通类,
- 选中包名
Ctrl+Shift+A
调出 Action 面板- 输入 delombok
- 选中 all lombok annotations
Gradle 下发布源码包, 报错 Library source does not match the bytecode for class XXX
解决方法是使用 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"
(完)