KSP生成源码CI构建时无法找到,本地运行正常求排查
KSP CI构建源码生成异常问题排查方案
以下是针对仅Travis CI环境出现KSP源码生成异常、本地正常问题的常见排查方向和解决办法:
清理CI构建缓存
CI环境的Gradle缓存可能残留旧的构建产物,干扰KSP源码生成。在Travis构建脚本中添加./gradlew clean作为前置步骤,或者调整Gradle缓存规则,排除build/generated/ksp/目录的缓存,避免旧文件覆盖新生成的源码。确认KSP源码目录配置
检查模块的build.gradle(或build.gradle.kts),确保已将KSP生成的源码目录添加到源码集中:android { sourceSets { main { java.srcDirs += "build/generated/ksp/main/kotlin" } // 如果有debug/release变体,需对应添加变体目录 debug { java.srcDirs += "build/generated/ksp/debug/kotlin" } } }本地IDE会自动识别该目录,但CI环境的构建系统可能需要显式配置才能读取生成的源码。
修正构建任务依赖顺序
若CI环境中编译任务在KSP源码生成任务前执行,会导致找不到生成的代码。可以显式声明编译任务依赖于KSP生成任务:// 针对Java编译任务 tasks.withType(JavaCompile).configureEach { dependsOn tasks.withType(com.google.devtools.ksp.gradle.KspTask) } // 针对Kotlin编译任务 tasks.withType(org.jetbrains.kotlin.gradle.tasks.KotlinCompile).configureEach { dependsOn tasks.withType(com.google.devtools.ksp.gradle.KspTask) }匹配Kotlin与KSP版本
KSP版本必须与项目使用的Kotlin版本严格对应(例如Kotlin 1.8.0需搭配KSP 1.8.0-1.0.9)。检查项目根目录的build.gradle中两者的版本配置,确保CI环境使用的版本与本地一致,避免版本不兼容导致源码生成失败。检查CI目录权限
Travis环境的构建目录权限可能限制KSP写入或编译任务读取生成的源码。在构建脚本中添加权限设置步骤:chmod -R 755 build/确保
build/generated/ksp/目录具备可读写权限。
内容的提问来源于stack exchange,提问作者Mirjalal
相关产品推荐
相关产品推荐

