未解决的参考:build.gradle.kts 中的 compileKotlin
Posted
技术标签:
【中文标题】未解决的参考:build.gradle.kts 中的 compileKotlin【英文标题】:Unresolved reference: compileKotlin in build.gradle.kts 【发布时间】:2019-08-22 16:21:45 【问题描述】:由 build.gradle 构建的 Kotlin 项目成功:
compileKotlin
kotlinOptions.jvmTarget = JavaVersion.VERSION_1_8
compileTestKotlin
kotlinOptions.jvmTarget = JavaVersion.VERSION_1_8
不错。
但是我需要改成build.gradle.kts:
plugins
kotlin("jvm") version "1.2.10"
id("application")
group = "com.myproject"
version = "1.0-SNAPSHOT"
application
mainClassName = "MainKt"
java.sourceCompatibility = JavaVersion.VERSION_1_8
repositories
mavenCentral()
jcenter()
val kotlinVer = "1.2.10"
dependencies
compile(kotlin(module = "stdlib-jre8", version = kotlinVer))
implementation("com.google.code.gson:gson:2.7")
implementation("com.squareup.okhttp3:logging-interceptor:3.8.0")
implementation("com.squareup.retrofit2:converter-gson:2.1.0")
implementation("com.squareup.retrofit2:retrofit:2.5.0")
implementation("org.jetbrains.kotlin:kotlin-stdlib-jdk8")
compileKotlin
kotlinOptions.jvmTarget = "1.8"
compileTestKotlin
kotlinOptions.jvmTarget = "1.8"
现在我得到错误:
Line 32: compileKotlin
^ Unresolved reference: compileKotlin
【问题讨论】:
我在您的构建脚本中没有看到kotlin
插件。 kotlinlang.org/docs/reference/using-gradle.html
@LaksithaRanasingha 我更新了我的帖子。没用。
【参考方案1】:
按照 Kotlin 官方文档 (using Gradle part),我建议在 build.gradle.kts 中使用这样的结构:
import org.jetbrains.kotlin.gradle.tasks.KotlinCompile
plugins
java
kotlin("jvm") version ("1.3.21")
// repositories, dependencies, etc...
val compileKotlin: KotlinCompile by tasks
val compileTestKotlin: KotlinCompile by tasks
compileKotlin.kotlinOptions
jvmTarget = "1.8"
compileTestKotlin.kotlinOptions
jvmTarget = "1.8"
【讨论】:
compileTestKotlin
和 compileKotlin
之间应该没有区别。还是我错过了什么?【参考方案2】:
Kotlin Gradle DSL 中存在导致此问题的问题。
https://github.com/gradle/kotlin-dsl-samples/issues/1368
在解决之前,您需要使用以下解决方法。
tasks.withType<org.jetbrains.kotlin.gradle.tasks.KotlinCompile>
kotlinOptions
jvmTarget = "1.8"
【讨论】:
关于如何扩展此任务的任何想法?我想创建一个编译 kotlin 文件的自定义任务。 应该先导入KotlinCompile
:import org.jetbrains.kotlin.gradle.tasks.KotlinCompile
。【参考方案3】:
使用withType
关键字:
import org.jetbrains.kotlin.gradle.tasks.KotlinCompile
plugins
val kotlin = "1.3.61"
kotlin("jvm") version kotlin apply false
subprojects
repositories mavenCentral(); mavenLocal()
apply(plugin = "org.jetbrains.kotlin.jvm")
tasks
val java: String by project
withType<KotlinCompile>
kotlinOptions jvmTarget = java ; sourceCompatibility = java; targetCompatibility = java
【讨论】:
以上是关于未解决的参考:build.gradle.kts 中的 compileKotlin的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 kotlinscript DSL (build.gradle.kts) 通过 url 添加 maven 存储库
如何在 build.gradle.kts 中设置 openApi 生成器全局属性