1 问题集合
- mapstruct-jdk8 编译报错
我以前项目使用的是mapstruct-jdk8<=1.3.1.Final ,现在做改造升级,比如springboot升级等,但是报错了
我们去mvn仓库去看下:
- Deprecated MapStruct artifact containing annotations to be used with JDK 8 and later - Relocated to mapstruct
- 具体看1.3.1.Final版本,如图所示:
项目过时了,虽然mapstruct-jdk8>=1.4.0.Final版本仍然可以使用,但是建议用mapstruct代替。
- Cannot find implementation
首先检查是否添加依赖支持,如下:
<dependency>
<groupId>org.mapstruct</groupId>
<artifactId>mapstruct</artifactId>
<version>${mapstruct.version}</version>
</dependency>
<dependency>
<groupId>org.mapstruct</groupId>
<artifactId>mapstruct-processor</artifactId>
<version>${mapstruct.version}</version>
</dependency>
- Couldn’t retrieve @Mapper annotation
如果项目中同时使用了swagger注解,可能是依赖冲突导致的,解决如下:
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
<version>${swagger2.version}</version>
<exclusions>
<exclusion>
<groupId>org.mapstruct</groupId>
<artifactId>mapstruct</artifactId>
</exclusion>
</exclusions>
</dependency>
- Cannot find implementation
我依赖也加了,也屏蔽了冲突依赖,但是还是报错Cannot find implementation,啥情况?
在使用了该注解的模块执行mvn clean install,此时就生成了@Mapper注解的接口的默认实现类,图示
2 后记
小伙伴如在项目中遇到mapstruct其他相关问题,欢迎交流或者留言
- 参考
- https://stackoverflow.com/questions/61710510/mapstruct-cannot-find-implementation
- https://qa.1r1g.com/sf/ask/4319735731/
- https://blog.csdn.net/yanweijie0317/article/details/125387458