【发布时间】:2020-11-13 17:26:16
【问题描述】:
当不同版本的 Kotlin jar 混合在类路径中时,Stackoverflow 上有几个关于 Kotlin 编译器警告的问题。
这个问题是一个不同的问题,它涉及您使用 Kotlin 开发 Gradle 插件时的情况。当您至少满足以下条件之一时:
-
kotlin-dsl插件已应用; -
java-gradle-plugin插件已应用; -
增加
gradleApi()依赖; -
增加
gradleKotlinDsl()依赖;
你有像kotlin("jvm") version "1.4.10" 这样的 Kotlin 插件,例如:
plugins {
java
kotlin("jvm") version "1.4.10"
`kotlin-dsl`
`java-gradle-plugin`
}
你会成名的:
w: Runtime JAR files in the classpath should have the same version. These files were found in the classpath:
bla-bla-bla/gradle-6.7/lib/kotlin-stdlib-1.3.72.jar (version 1.3)
bla-bla-bla/modules-2/files-2.1/.../kotlin-stdlib-jdk8-1.4.10.jar (version 1.4)
and so on for every Kotlin jar
w: Consider providing an explicit dependency on kotlin-reflect 1.4 to prevent strange errors
w: Some runtime JAR files in the classpath have an incompatible version. Consider removing them from the classpath
这里 Kotlin 1.3.72 是 Gradle 6.7 的嵌入式版本,而 Kotlin 1.4.10 是您手动添加的版本。
问题在于gradleApi() 或gradleKotlinDsl(),因为它们直接将 Kotlin jar 添加为本地文件系统文件,从而绕过了 Gradle 依赖版本解析。
【问题讨论】:
标签: kotlin gradle gradle-plugin gradle-kotlin-dsl