如何使用 Kotlin DSL 配置 Gradle 的 Kotlin 协程?
How can I configure Kotlin coroutines for Gradle with the Kotlin DSL?
使用 Gradle 4.4.1 和 Kotlin-DSL,我想在我的 Kotlin 1.2.20 项目中配置实验性 Kotlin 协程。这被证明是非常困难的。
官方 Kotlin 文档本身只提到 Gradle with the Groovy DSL 而不是 Kotlin。
Kotlin-DSL 项目有一个 example for coroutines 不起作用。可能是针对较旧的 Gradle 版本(该脚本中的 Kotlin 版本是 1.1.51,这本身就很可疑)。
PS:即使是 IntelliJ 的 configure Kotlin 也会编写不正确的 Gradle 代码。降级是唯一的选择吗?
附录:构建脚本在 IntelliJ IDEA 中非常红。 IDE 一直在添加导入语句。似乎是这些徒劳的尝试使脚本无法正常工作。我暂时禁用了‘Add unambiguos imports on the fly’,即使脚本大部分保持红色,Gradle 也可以执行它。之后,IntelliJ 的错误通知也消失了。
假设您已将 kotlin
插件应用于项目:
import org.jetbrains.kotlin.gradle.dsl.Coroutines
plugins {
kotlin("jvm")
}
kotlin { // type is KotlinJvmProjectExtension
experimental.coroutines = Coroutines.ENABLE
}
这适用于 Gradle 4.4.1 和 4.5-rc-1,我也应该适用于之前的版本。如果您使用 buildscript
而不是 plugins
来引入 Kotlin 插件,您可能没有生成的访问器,将不得不使用 extensions.getByType(KotlinJvmProjectExtension::class.java).apply {}
(或类似的东西)。
使用 Gradle 4.4.1 和 Kotlin-DSL,我想在我的 Kotlin 1.2.20 项目中配置实验性 Kotlin 协程。这被证明是非常困难的。
官方 Kotlin 文档本身只提到 Gradle with the Groovy DSL 而不是 Kotlin。
Kotlin-DSL 项目有一个 example for coroutines 不起作用。可能是针对较旧的 Gradle 版本(该脚本中的 Kotlin 版本是 1.1.51,这本身就很可疑)。
PS:即使是 IntelliJ 的 configure Kotlin 也会编写不正确的 Gradle 代码。降级是唯一的选择吗?
附录:构建脚本在 IntelliJ IDEA 中非常红。 IDE 一直在添加导入语句。似乎是这些徒劳的尝试使脚本无法正常工作。我暂时禁用了‘Add unambiguos imports on the fly’,即使脚本大部分保持红色,Gradle 也可以执行它。之后,IntelliJ 的错误通知也消失了。
假设您已将 kotlin
插件应用于项目:
import org.jetbrains.kotlin.gradle.dsl.Coroutines
plugins {
kotlin("jvm")
}
kotlin { // type is KotlinJvmProjectExtension
experimental.coroutines = Coroutines.ENABLE
}
这适用于 Gradle 4.4.1 和 4.5-rc-1,我也应该适用于之前的版本。如果您使用 buildscript
而不是 plugins
来引入 Kotlin 插件,您可能没有生成的访问器,将不得不使用 extensions.getByType(KotlinJvmProjectExtension::class.java).apply {}
(或类似的东西)。