Kotlingradle插件-如何使用自定义输出目录?

oknwwptz  于 2022-11-24  发布在  Kotlin
关注(0)|答案(1)|浏览(204)

似乎KotlinGradle插件忽略了指定的编译输出目录:

sourceSets {
    main {
        kotlin {
            srcDirs 'source/kotlin'
            outputDir = file('work/program')
        }
    }
}

编译器输出将转到“build/classes/Kotlin/main”目录,而不是“work/program”目录。但在Java Gradle项目中,以相同方式指定的outputDir将按预期工作。
是否有方法将自定义编译器输出目录与KotlinGradle插件一起使用?(版本:Kotlin1.2.31,等级4.6)

**更新:**我提交了关于此问题的错误报告:https://youtrack.jetbrains.com/issue/KT-23807

jdg4fx2g

jdg4fx2g1#

其他用户在Kotlin问题跟踪器中发布了解决方案:

tasks.withType(org.jetbrains.kotlin.gradle.tasks.KotlinCompile).all {
    destinationDir = new File(buildDir, "work/program")
}

(add您的“build.gradle”文件中的此片段)

稍后更新

对于Gradle 7.x,Groovy语法为:

compileKotlin {
    destinationDirectory = file("work/program")
}

compileTestKotlin {
    destinationDirectory = file("work/proof")
}

如果您使用Kotlin语法,它会稍长一些:

import org.jetbrains.kotlin.gradle.tasks.KotlinCompile

val compileKotlin: KotlinCompile by tasks
compileKotlin.destinationDirectory.set(file("work/program"))
val compileTestKotlin: KotlinCompile by tasks
compileTestKotlin.destinationDirectory.set(file("work/proof"))

请注意,您的IDE可能仍然会在不同的目录中编译类。要使Intellij Idea使用与Gradle相同的输出目录,请添加这些:

pulgins {
    idea
}

tasks {
    idea {
        module {
            outputDir = file("work/program")
            testOutputDir = file("work/proof")
        }
    }
}

相关问题