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

如何禁用Google KSP在测试目录中的代码生成任务

解决方案

方法1:仅为main源集添加KSP处理器依赖

默认情况下,ksp()依赖会对所有源集(main、test等)生效,导致test源集也触发代码生成。只需将依赖改为仅作用于main源集:

在methods/build.gradle.kts的dependencies块中修改:

dependencies {
    implementation(project(":engine"))
    implementation(project(":methodsProcessor"))

    testImplementation(kotlin("test"))
    testImplementation(testFixtures(project(":engine")))
    testImplementation("org.junit.jupiter:junit-jupiter-params:5.8.2")

    // 仅为main源集添加KSP处理器
    kspMain(project(":methodsProcessor"))
}

这样KSP只会处理main源集的代码,不会生成test目录下的文件,也不会触发:methods:kspTestKotlin任务。

方法2:禁用kspTestKotlin任务

如果需要保留全局ksp依赖,但单独禁用test相关的任务,需确保在任务创建后再配置。可以使用afterEvaluate块延迟查找任务,或者直接在顶层配置:

在methods/build.gradle.kts中添加:

afterEvaluate {
    tasks.findByName("kspTestKotlin")?.enabled = false
}

或者更精确地指定任务:

tasks.named("kspTestKotlin") {
    enabled = false
}

之前的错误是因为将任务配置放在了ksp{}扩展块内,该块用于配置KSP通用选项而非直接操作任务,导致任务查找时机过早找不到目标任务。

方法3:从KSP处理中移除test源集

通过KSP扩展配置,指定仅处理main源集,移除test源集:

在methods/build.gradle.kts中添加:

ksp {
    sourceSets {
        remove(sourceSets.test.get())
    }
}

此配置会告诉KSP不要处理test源集的代码,自然不会生成对应的目录和文件,也不会执行test相关的KSP任务。

内容的提问来源于stack exchange,提问作者gxyd

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 08:08:18