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

Kotlin Gradle插件如何配置自定义编译输出目录?

解决Kotlin Gradle插件自定义编译输出目录不生效的问题

在你使用的Kotlin 1.2.31 + Gradle 4.6版本组合中,确实存在这个问题——直接在sourceSets的Kotlin块里设置outputDir不会生效,这是因为当时的Kotlin Gradle插件对输出目录的配置逻辑和Java插件不一样:Java插件会直接读取sourceSets里的outputDir配置,但Kotlin插件并没有沿用这个逻辑。

正确的配置方式

你需要直接修改Kotlin编译任务的输出目录,而不是通过sourceSets配置。具体可以这样写:

// 针对主代码的Kotlin编译任务
compileKotlin {
    destinationDir = file('work/program')
}

// 如果需要配置测试代码的输出目录,可添加下面这段
compileTestKotlin {
    destinationDir = file('work/test-program')
}

如果项目里有多个Kotlin编译任务(比如多模块或者不同的source set),也可以批量处理:

tasks.withType(org.jetbrains.kotlin.gradle.tasks.KotlinCompile) {
    destinationDir = file("work/program/${it.name.replace('compile', '').toLowerCase()}")
}

为什么原来的配置不生效

在Kotlin 1.x早期版本的Gradle插件中,sourceSets.main.kotlin.outputDir这个配置项并没有被编译任务所识别,Kotlin编译任务默认会复用Java插件的输出目录(也就是build/classes/kotlin/main),或者使用插件内部硬编码的路径,所以直接修改sourceSets里的设置不会起作用。

你提交bug报告的做法是对的,这个问题在后续的Kotlin版本(比如1.3及以上)中已经得到了修复,新版本的插件已经支持通过sourceSets来配置Kotlin的输出目录了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 08:20:25