IDEA用高版本Gradle构建项目时,lombok插件注解实体编译无效的解决办法

1、搭建项目,使用idea的Spring Initializr创建一个初始的springboot+gradle项目,springboot是2.3.12.RELEASE

在这里插入图片描述

2、创建完成后的gradle

plugins {
    id 'org.springframework.boot' version '2.3.12.RELEASE'
    id 'io.spring.dependency-management' version '1.0.11.RELEASE'
    id 'java'
}

group = 'com.kk'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = '1.8'



repositories {
    mavenCentral()
}

dependencies {
    //改成web项目
    implementation 'org.springframework.boot:spring-boot-starter-web'
    testImplementation('org.springframework.boot:spring-boot-starter-test') {
        exclude group: 'org.junit.vintage', module: 'junit-vintage-engine'
    }
}

tasks.named('test') {
    useJUnitPlatform()
}

3、问题

初始的springboot+gradle的项目完成,引入lombok插件

plugins {
    id 'org.springframework.boot' version '2.3.12.RELEASE'
    id 'io.spring.dependency-management' version '1.0.11.RELEASE'
    id 'java'
}

group = 'com.kk'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = '1.8'



repositories {
    mavenCentral()
}

dependencies {
    implementation 'org.springframework.boot:spring-boot-starter-web'
    testImplementation('org.springframework.boot:spring-boot-starter-test') {
        exclude group: 'org.junit.vintage', module: 'junit-vintage-engine'
    }
    // swagger
//    implementation 'io.springfox:springfox-swagger2:3.0.0'
    // swagger ui
//    implementation 'io.springfox:springfox-swagger-ui:3.0.0'

//    implementation 'io.springfox:springfox-boot-starter:3.0.0'
    //swagger-bootstrap-ui
//    implementation 'com.github.xiaoymin:swagger-bootstrap-ui:1.9.6'
    //
    // knife4j-spring-boot-starter
//    implementation 'com.github.xiaoymin:knife4j-spring-boot-starter:3.0.3'
    implementation 'com.github.xiaoymin:knife4j-openapi2-spring-boot-starter:4.5.0'

    compileOnly 'org.projectlombok:lombok'


    implementation 'mysql:mysql-connector-java:8.0.33'
    implementation 'com.baomidou:mybatis-plus-boot-starter:3.5.7'

}

tasks.named('test') {
    useJUnitPlatform()
}

创建一个R类

@Data
public class R {

    private Integer code;
    private String message;
    private Map<String,Object> data=new HashMap<>();

    public static R ok() {
        R r = new R();
        r.setCode(0);
        r.setMessage("成功");
        return r;
    }

    public static R error() {
        R r = new R();
        r.setCode(-1);
        r.setMessage("失败");
        return r;
    }

    public R data(String key, Object value) {
        this.data.put(key, value);
        return this;
    }
}

不编译代码,一切正常,编译时出现了问题,如下图:
在这里插入图片描述
出现一堆乱码,指向类里面的set方法,不知所云。去掉set,项目能正常启动,然而在执行到有R的类返回时,会出现转换错误。纳闷。起初以为编译缓存问题,清理gradle,重启,还是这个鸟样。

经过一番查证,怀疑是lombok注解出现了 编译问题,去掉,自己去实现getter 和setter方法,完美启动。果然是lombok的问题。

又经过一番查找,说需要引入annotationProcessor ‘org.projectlombok:lombok’,果然问题解决。网上说“高版本号的gradle需要配置annotationProcessor ‘org.projectlombok:lombok:1.18.4’ ”。

plugins {
    id 'org.springframework.boot' version '2.3.12.RELEASE'
    id 'io.spring.dependency-management' version '1.0.11.RELEASE'
    id 'java'
}

group = 'com.kk'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = '1.8'



repositories {
    mavenCentral()
}

dependencies {
    implementation 'org.springframework.boot:spring-boot-starter-web'
    testImplementation('org.springframework.boot:spring-boot-starter-test') {
        exclude group: 'org.junit.vintage', module: 'junit-vintage-engine'
    }
    // swagger
//    implementation 'io.springfox:springfox-swagger2:3.0.0'
    // swagger ui
//    implementation 'io.springfox:springfox-swagger-ui:3.0.0'

//    implementation 'io.springfox:springfox-boot-starter:3.0.0'
    //swagger-bootstrap-ui
//    implementation 'com.github.xiaoymin:swagger-bootstrap-ui:1.9.6'
    //
    // knife4j-spring-boot-starter
//    implementation 'com.github.xiaoymin:knife4j-spring-boot-starter:3.0.3'
    implementation 'com.github.xiaoymin:knife4j-openapi2-spring-boot-starter:4.5.0'

    compileOnly 'org.projectlombok:lombok'
    **annotationProcessor 'org.projectlombok:lombok'**

    implementation 'mysql:mysql-connector-java:8.0.33'
    implementation 'com.baomidou:mybatis-plus-boot-starter:3.5.7'

}

tasks.named('test') {
    useJUnitPlatform()
}
  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
构建Spring Boot 2.6.6分模块项目并在公共模块中使用lombok插件,可以按照以下步骤进行: 首先,在项目根目录下创建一个settings.gradle文件,用于声明多个子项目: ``` rootProject.name = 'my-spring-boot-project' include 'common' include 'web' ``` 在此示例中,我们将创建两个子项目:common和web。 接下来,在common子项目的build.gradle文件中,添加以下内容: ``` plugins { id 'java' id 'io.freefair.lombok' version '6.2.0' } dependencies { implementation 'org.springframework.boot:spring-boot-starter' // 添加其他依赖项 } ``` 在这里,我们使用了io.freefair.lombok插件,该插件提供了对lombok注解的支持。同,我们还声明了对Spring Boot框架的依赖。 在web子项目的build.gradle文件中,添加以下内容: ``` plugins { id 'org.springframework.boot' version '2.6.6' id 'io.spring.dependency-management' version '1.0.11.RELEASE' id 'java' } dependencies { implementation project(':common') // 添加其他依赖项 } ``` 在这里,我们使用了Spring Boot Gradle插件和Spring Boot依赖管理插件,以便在web模块中使用Spring Boot框架。同,我们还声明了对common模块的依赖。 最后,在根目录下运行gradle build命令,Gradle将会构建所有子项目,并在web子项目的build/libs目录下生成可执行的jar文件。 这样就完成了Spring Boot 2.6.6分模块项目构建,并在公共模块中使用了lombok插件
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值