首页 > 解决方案 > 未解决的参考:sourceSets - Gradle Kotlin DSL in another file

问题描述

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

build.gradle

apply plugin: 'java'
apply from: 'gradle/test.gradle'

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")

gradle/test.gradle.kts

sourceSets {
    create("unitTest") {
     // Do configurations
    }
}

如果失败并出现Unresolved reference: sourceSets错误。

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

标签: gradlekotlinbuild.gradlegradle-kotlin-dslsource-sets

解决方案


它与 Unresolved reference 的重复:Gradle Kotlin DSL 的 sourceSets

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

由于插件在同一个构建脚本中被强制应用,Gradle 无法知道插件被应用,因此无法生成允许访问源集的扩展函数。

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

create()可以使用创建新的 sourceSet方法。

project.the<SourceSetContainer>().create("unitTest")


推荐阅读