Gradle(Kotlin)项目中KSP无法找到mapstruct-processor的问题
解决KSP集成MapStruct的编译错误
问题根源
报错[ksp] No vendors were found in the processor class path.本质是KSP找不到可用的注解处理器,结合你的配置,问题出在两点:
- MapStruct 1.6.3版本过旧,对Kotlin 2.1.x和KSP的兼容性不足
- 依赖配置错误,未使用MapStruct专为Kotlin/KSP适配的处理器版本
修复步骤
1. 升级MapStruct版本
将MapStruct升级到1.6.5(当前稳定版,对新Kotlin版本兼容性更好),旧版1.6.3无法适配Kotlin 2.1的语法和编译逻辑。
2. 修正依赖配置
原配置中的mapstruct-processor是Java专用处理器,Kotlin项目需要替换为MapStruct的Kotlin专用处理器,同时新增Kotlin扩展依赖:
- 新增
implementation("org.mapstruct:mapstruct-kotlin:1.6.5"),提供Kotlin特有的类型支持 - 将
ksp("org.mapstruct:mapstruct-processor:1.6.3")替换为ksp("org.mapstruct:mapstruct-kotlin-processor:1.6.5")
3. 确认KSP版本匹配
你当前使用的Kotlin 2.1.0对应KSP版本2.1.0-1.0.29是正确的,无需修改。
修复后的关键配置片段
plugins { kotlin("jvm") version "2.1.0" // 其他插件保持原样 id("com.google.devtools.ksp") version "2.1.0-1.0.29" } // 统一管理版本,方便后续维护 val mapstructVersion = "1.6.5" dependencies { implementation("org.mapstruct:mapstruct:${mapstructVersion}") // 新增MapStruct Kotlin扩展依赖 implementation("org.mapstruct:mapstruct-kotlin:${mapstructVersion}") // 替换为Kotlin专用KSP处理器 ksp("org.mapstruct:mapstruct-kotlin-processor:${mapstructVersion}") // 其余Spring相关依赖保持不变 } ksp { arg("mapstruct.defaultComponentModel", "spring") }
验证操作
- 先执行
./gradlew clean清理旧编译产物 - 再运行
./gradlew kspKotlin,确认错误消失 - 检查
build/generated/ksp/main/kotlin目录,应该能看到MapStruct生成的实现类
内容的提问来源于stack exchange,提问作者Danil Gelimyanov
相关产品推荐
相关产品推荐

