You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.07 04:45:26