在kotlinjs项目中包含kotlinx-data-time libray的问题

问题描述

失败:构建失败,并出现异常。

  • 出了什么问题: 无法确定任务':packageJson'的依赖关系。

无法解析配置':npm'的所有依赖关系。 无法解析org.jetbrains.kotlinx:kotlinx-datetime:0.1.0。 要求: 项目: >无法在org.jetbrains.kotlinx的以下变体之间选择:kotlinx-datetime:0.1.0: -jsIr运行时 -jsLegacy运行时 它们都符合使用者属性: -变种的“ jsIr运行时”功能org.jetbrains.kotlinx:kotlinx-datetime:0.1.0: -无与伦比的属性: -找到org.gradle.status“发行版”,但不是必需的。 -找到org.jetbrains.kotlin.js.compiler'ir',但不是必需的。 -兼容的属性: -必需的org.gradle.usage'kotlin-runtime'和找到兼容的值'kotlin-runtime'。 -必需org.jetbrains.kotlin.platform.type'js'并找到兼容值'js'。 -多种``jsLegacy-runtime''功能org.jetbrains.kotlinx:kotlinx-datetime:0.1.0: -无与伦比的属性: -找到org.gradle.status“发行版”,但不是必需的。 -找到org.jetbrains.kotlin.js.compiler“旧版”,但不是必需的。 -兼容的属性: -必需org.gradle.usage'kotlin-runtime'并找到兼容的值'kotlin-runtime'。 -必需的org.jetbrains.kotlin.platform.type'js'并找到兼容的值'js'。

7秒内失败

将内部版本扫描发布到scans.gradle.com需要接受在https://gradle.com/terms-of-service上定义的Gradle服务条款。您接受这些条款吗? [是,不是]

解决方法

使用Kotlin 1.3.xx构建项目时,如果您的某个依赖项(或任何传递性依赖项)是使用Kotlin 1.4+构建的,则可能会遇到Gradle错误:

出现此解析问题是因为Kotlin 1.4引入了Kotlin / JS的两个不同编译器后端之间的选择-Kotlin 1.3.xx中不存在这种选择。

解决方法:

为了使用这些库,请在项目的根目录中创建一个名为workaround_to_use_1_4_libs_in_1_3.gradle.kts的文件,并添加以下代码:

    val pluginAction: Plugin<*>.() -> Unit = {
    val pluginVersion = try {
        this.javaClass.getMethod("getKotlinPluginVersion").invoke(this) as String
    } catch(e: Exception) { null }
    if (pluginVersion != null && pluginVersion.startsWith("1.3")) {
        val jsCompilerAttr = Attribute.of("org.jetbrains.kotlin.js.compiler",String::class.java)
        project.dependencies.attributesSchema.attribute(jsCompilerAttr) {
            this.disambiguationRules.add(KotlinJsCompilerDisambiguationRule::class.java)
        }
    }
}
project.plugins.withId("org.jetbrains.kotlin.multiplatform",pluginAction)
project.plugins.withId("org.jetbrains.kotlin.js",pluginAction)
// project.plugins.withId("kotlin2js",pluginAction) // maybe even `kotlin2js`
private class KotlinJsCompilerDisambiguationRule : AttributeDisambiguationRule<String> {
    override fun execute(details: MultipleCandidatesDetails<String>) {
        details.closestMatch("legacy")
    }
}

要应用解决方法,请将以下代码段添加到build.gradle文件中:

apply(from = "workaround_to_use_1_4_libs_in_1_3.gradle.kts")

我没有在闲置频道中找到某个人指出的解决方案 您跟踪具有解决方案的链接

the sloution link

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...