未解析的引用:另一个文件中的sourceSets-Gradle Kotlin DSL

未解析的引用:另一个文件中的sourceSets-Gradle Kotlin DSL,gradle,kotlin,build.gradle,gradle-kotlin-dsl,source-sets,Gradle,Kotlin,Build.gradle,Gradle Kotlin Dsl,Source Sets,在Gradle(Groovy)中,我曾经这样做来配置源代码集: build.gradle: apply plugin: 'java' apply from: 'gradle/test.gradle' sourceSets { unitTest { compileClasspath += main.output runtimeClasspath += main.output } } gradle/test.gradle: apply plugin

在Gradle(Groovy)中,我曾经这样做来配置源代码集:

build.gradle

apply plugin: 'java'
apply from: 'gradle/test.gradle'
sourceSets {
    unitTest {
        compileClasspath += main.output
        runtimeClasspath += main.output
    }
}
gradle/test.gradle

apply plugin: 'java'
apply from: 'gradle/test.gradle'
sourceSets {
    unitTest {
        compileClasspath += main.output
        runtimeClasspath += main.output
    }
}
然后我将使用
unitTest
源代码集来创建任务

当我尝试在IntelliJ中为Gradle KTS执行相同操作时:

build.gradle.kts

plugins {
    java
}

apply(from = "gradle/test.gradle.kts")
sourceSets {
    create("unitTest") {
     // Do configurations
    }
}
gradle/test.gradle.kts

plugins {
    java
}

apply(from = "gradle/test.gradle.kts")
sourceSets {
    create("unitTest") {
     // Do configurations
    }
}
如果由于
未解析引用而失败:sourceset
错误


我怎么能在Kotlin Gradle做同样的事情呢?

这是一种重复

使用单独的gradle文件时,不能直接引用sourceSet。 参考答案:

由于插件必须在同一构建脚本中应用, Gradle不知道应用了插件,因此无法生成 允许访问源集的扩展函数

如前所述,您可以使用
project.the()

要创建新的源集,可以使用
create()
方法


project.the()。未解析的引用是在尝试“编译”
gradle/test.gradle
时出现的。Groovy中的这段代码确实有效。如果我尝试重命名该文件,则错误不同(找不到某种类型的文件),可能是重复的