lombok 不生效

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.projectlombokgroupId>
    <artifactId>lombokartifactId>
    <version>1.18.22version>
    <scope>providedscope>
dependency>

多模块项目的所有 lombok 都应该进行升级

原始类型 booleanisXXX 不生效

原始类型的布尔类型中的 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

  • 添加 annotationProcessordependencies
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 注解的类, 转换为普通类,

  1. 选中包名
  2. Ctrl+Shift+A 调出 Action 面板
  3. 输入 delombok
  4. 选中 all lombok annotations
    lombok 不生效_第1张图片

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"

(完)

你可能感兴趣的:(Maven,maven)