sourceSets与gradle kotlin DSL在4.10rc级别

inn*_*ov8 8 kotlin gradle-kotlin-dsl

我使用以下代码:

java.sourceSets["main"].java {
    srcDir("src/main/extraSource")
}
Run Code Online (Sandbox Code Playgroud)

在gradle 4.9中完美运行,但在4.10中rc1给出以下错误:

  Line 5: java.sourceSets["main"].java {
               ^ Unresolved reference. None of the following candidates is applicable because of receiver type mismatch: 
                   public val Project.sourceSets: SourceSetContainer defined in org.gradle.kotlin.dsl
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?是否需要改变?许多其他答案(例如 ,此问题的这一个和每个建议的答案)如果已经改变,也将需要更新

esk*_*tos 12

这是预期的重大变化,列于https://docs.gradle.org/4.10-rc-2/release-notes.html#changes-to-the-gradle-kotlin-dsl

但不幸的是,它在Kotlin DSL发行说明中缺失,它将被修复为4.10 GA.

简而言之,java.sourceSets现在sourceSets.对于您的示例,修复的脚本是:

sourceSets["main"].java {
    srcDir("src/main/extraSource")
}
Run Code Online (Sandbox Code Playgroud)

这是一个变化gradle/gradle,请参阅https://github.com/gradle/gradle/pull/5867了解某些背景信息.