如何使用Kotlin DSL为Gradle配置Kotlin协同程序?

时间:2018-01-17 20:07:51

标签: intellij-idea gradle kotlin kotlinx.coroutines gradle-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的配置Kotlin 写入错误的Gradle代码。降级是唯一的选择吗?

附录:IntelliJ IDEA中的构建脚本非常红。 IDE一直在添加import语句。似乎这些徒劳的尝试是使脚本失去功能的原因。我暂时禁用了“动态添加unambiguos导入”,即使脚本大部分都是红色,Gradle也可以执行它。然后,带有IntelliJ的错误通知也消失了。

1 个答案:

答案 0 :(得分:3)

假设您已将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 {}(或类似的东西)。