更新于 

MapStruct与lombok版本不兼容报错问题

起因

项目中引入了MapStruct,在编译构建的时候碰到一个报错:

java: No property named “XXX” exists in source parameter(s). Did you mean “null”

检查配置

  • pom文件是否配置插件

    <build>
    <plugins>
    <plugin>
    <artifactId>maven-compiler-plugin</artifactId>
    <version>3.8.1</version>
    <configuration>
    <encoding>UTF-8</encoding>
    <source>${maven.compiler.source}</source>
    <target>${maven.compiler.target}</target>
    <annotationProcessorPaths>
    <path>
    <groupId>org.mapstruct</groupId>
    <artifactId>mapstruct-processor</artifactId>
    <version>${mapstruct.version}</version>
    </path>
    <path>
    <groupId>org.projectlombok</groupId>
    <artifactId>lombok</artifactId>
    <version>${lombok.version}</version>
    </path>
    <path>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-configuration-processor</artifactId>
    <version>${springboot.version}</version>
    </path>
    </annotationProcessorPaths>
    </configuration>
    </plugin>
    </plugins>
    </build>

    maven插件里有正确配置相关插件。

  • 是否有引入相关依赖

    <dependency>
    <groupId>org.mapstruct</groupId>
    <artifactId>mapstruct</artifactId>
    <scope>compile</scope>
    </dependency>

    有正确引入依赖。

原因

最后通过查询网上资料发现,lombokmapstruct的版本太高会出现这个问题。

image-20210806193056767

修改pom文件:

- <lombok.version>1.18.20</lombok.version>
- <mapstruct.version>1.4.2.Final</mapstruct.version>

+ <lombok.version>1.18.12</lombok.version>
+ <mapstruct.version>1.4.1.Final</mapstruct.version>

将版本修改之后问题解决。