使用Maven与Kotlin时MapStruct未生成实现类问题
MapStruct + Kotlin + Maven 无法生成实现类问题
在使用MapStruct结合Kotlin与Maven时,遇到MapStruct无法生成对应实现类的问题,Stack Overflow上相关解决方案均无效。
已做配置
参考mapstruct-examples/mapstruct-kotlin示例,在项目根目录pom.xml的<pluginManagement>中添加了kapt插件及依赖配置:
<!-- Cut out non-kapt executions --> <execution> <id>kapt</id> <goals> <goal>kapt</goal> </goals> <configuration> <sourceDirs> <sourceDir>src/main/kotlin</sourceDir> <sourceDir>src/main/java</sourceDir> </sourceDirs> <annotationProcessorPaths> <annotationProcessorPath> <groupId>org.mapstruct</groupId> <artifactId>mapstruct-processor</artifactId> <version>${org.mapstruct.version}</version> <!-- :1.5.5.Final --> </annotationProcessorPath> </annotationProcessorPaths> </configuration> </execution>
各个子模块中引用kotlin-maven-plugin的配置如下:
<!-- Cut out unnecessary stuff again --> <plugin> <groupId>org.jetbrains.kotlin</groupId> <artifactId>kotlin-maven-plugin</artifactId> </plugin>
Mapper代码
@Mapper interface CustomMapper { fun toDTO(entity: Entity): DTO fun toEntity(dto: DTO): Entity }
排查建议
- 确认父pom中已正确定义
${org.mapstruct.version}为1.5.5.Final,子模块能正常继承该版本 - 子模块的kotlin-maven-plugin需绑定完整生命周期执行阶段,确保kapt被触发执行,示例配置:
<plugin> <groupId>org.jetbrains.kotlin</groupId> <artifactId>kotlin-maven-plugin</artifactId> <executions> <execution> <id>compile</id> <goals> <goal>compile</goal> </goals> <configuration> <sourceDirs> <sourceDir>src/main/kotlin</sourceDir> </sourceDirs> </configuration> </execution> <execution> <id>test-compile</id> <goals> <goal>test-compile</goal> </goals> </execution> <execution> <id>kapt</id> <goals> <goal>kapt</goal> </goals> </execution> </executions> </plugin> - 检查Maven构建日志,查看kapt阶段是否有报错或警告,比如Entity、DTO类是否存在访问权限问题(如私有字段未提供getter/setter)
- 确保子模块中已添加MapStruct核心依赖:
<dependency> <groupId>org.mapstruct</groupId> <artifactId>mapstruct</artifactId> <version>${org.mapstruct.version}</version> </dependency> - 执行
mvn clean install清理缓存后重新构建,避免旧构建产物干扰
内容的提问来源于stack exchange,提问作者Z-100
相关产品推荐
相关产品推荐

