Gradle Kotlin DSL 配置编译错误 Java 规范

Gradle Compilation Error with Kotlin DSL configuring Java Spec

我正在尝试为 Kotlin 项目创建构建文件,该项目有时会包含 java 源代码。过去在多项目构建中使用基于 Groovy 的构建文件时,我可以毫无问题地在 subproject 块中指定 sourceCompatibility。对于 Kotlin DSL,我知道它必须在 java 块中才能使用 Kotlin DSL 配置,但是当我尝试从根 build.gradle.kts 文件中的 subproject 块进行配置时,我得到编译错误:

Script compilation errors:

Line 14:     java {
           ^ Expression 'java' cannot be invoked as a function. The function 'invoke()' is not found

Line 14:     java {
           ^ Unresolved reference. None of the following candidates is applicable because of receiver type mismatch: 
               public val PluginDependenciesSpec.java: PluginDependencySpec defined in org.gradle.kotlin.dsl

Line 15:         sourceCompatibility = JavaVersion.VERSION_1_8
               ^ Unresolved reference: sourceCompatibility

3 errors

我已将 gist 添加到我正在使用的 gradle 构建文件中。现在,如果我在子项目 build.gradle.kts 文件之一中指定 java 块,我就可以让它工作,但我希望将设置应用于所有子项目,而不仅仅是特定项目。

你可以直接使用

configure<JavaPluginExtension> { ... }