简体   繁体   English

Lombok 升级到 Gradle 5.0 后导致 MapStruct compileJava 构建失败

[英]Lombok causing MapStruct compileJava build failure after upgrading to Gradle 5.0

We are trying to upgrade from Gradle 4.5 to 5.0.我们正在尝试从 Gradle 4.5 升级到 5.0。 After upgrade, compileJava is failing because Mapstruct is not able to resolve values (getters not available obviously) used in @Mapping annotation.升级后,compileJava 失败,因为 Mapstruct 无法解析 @Mapping 注解中使用的值(getter 显然不可用)。 This was working fine in Gradle 4.5.这在 Gradle 4.5 中运行良好。

The code is like this代码是这样的

@Mapper(componentModel = "spring")
public interface CAndACodeGenConverter extends BaseConverter<CGen, AGen> {

    @Mapping(target = "owner", source = "owner.name")
    @Mapping(target = "useCA", source = "defaultCA")
    AGen convertToDto(CGen entity);
}

Our build.gradle is like this我们的build.gradle是这样的

    mapstructVersion = "1.4.1.Final"
    lombokVersion = "1.18.12"
    lombokMapstructBindingVersion = "0.2.0"

    compileOnly('org.projectlombok:lombok:1.18.12')
    compile("org.mapstruct:mapstruct:${mapstructVersion}")
    implementation "org.mapstruct:mapstruct:${mapstructVersion}", "org.projectlombok:lombok:${lombokVersion}"
    annotationProcessor "org.mapstruct:mapstruct-processor:${mapstructVersion}", "org.projectlombok:lombok-mapstruct-binding:${lombokMapstructBindingVersion}"
 

The error we are getting is我们得到的错误是

error: No property named "owner.name" exists in source parameter(s). Did you mean "null"?

This was working fine in Gradle 4.5.这在 Gradle 4.5 中运行良好。

Try to change dependencies order like below:尝试更改依赖顺序,如下所示:

compileOnly "org.projectlombok:lombok:$lombokVersion"
compileOnly "org.mapstruct:mapstruct:${mapstructVersion}"
annotationProcessor "org.projectlombok:lombok-mapstruct-binding:0.2.0"
annotationProcessor "org.mapstruct:mapstruct-processor:${mapstructVersion}"
annotationProcessor "org.projectlombok:lombok:$lombokVersion"

I've tested it just now and it works.我刚刚测试过它并且它有效。

PS IDK why this order is required, got it from lombok-mapstruct-binding related article long time ago PS IDK 为什么需要这个命令,很久以前从lombok-mapstruct-binding 相关文章中得到的

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM