java - 使用 Kotlin DSL 配置 Java 规范时出现 Gradle 编译错误

标签 java gradle kotlin gradle-kotlin-dsl

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

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 block ,我就可以让它工作,但我希望该设置应用于所有子项目,而不仅仅是特定项目。

最佳答案

你可以直接使用

configure<JavaPluginExtension> { ... }

关于java - 使用 Kotlin DSL 配置 Java 规范时出现 Gradle 编译错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53578055/

相关文章:

java - 获取所有租户中的人员

Java Spring : How to declare maven dependency to gradle

android - withContext(Dispatchers.IO) 如何用于房间

android - 如何在 OnPreferenceChange 中保存另一个值而不是 newValue ?

kotlin - 从 kotlin 调用 java varargs 方法

java - ConcurrentHashMap 具有添加效果

java - 使用 Mongodb java 驱动程序 3 的 $objectToArray 的等效项

java - eclipse 设置源代码级别

gradle - 我可以在gradle项目中使用备用主要sourceSet吗?

android - 使用操作系统独立路径 'stylesheet.css'找到了多个文件