Gradle 在Kotlinks项目中包含kotlinx数据时间库的问题

Gradle 在Kotlinks项目中包含kotlinx数据时间库的问题,gradle,gradle-kotlin-dsl,kotlin-js,Gradle,Gradle Kotlin Dsl,Kotlin Js,失败:生成失败,出现异常 出了什么问题: 无法确定任务“:packageJson”的依赖项 无法解析配置“:npm”的所有依赖项。 无法解析org.jetbrains.kotlinx:kotlinx日期时间:0.1.0。 要求: 项目: >无法在org.jetbrains.kotlinx的以下变体之间进行选择:kotlinx datetime:0.1.0: -jsIr运行时 -JSL遗留运行时 所有这些都符合消费者属性: -变体“jsIr运行时”功能org.jetbrains.kotlinx

失败:生成失败,出现异常

  • 出了什么问题: 无法确定任务“:packageJson”的依赖项
无法解析配置“:npm”的所有依赖项。 无法解析org.jetbrains.kotlinx:kotlinx日期时间:0.1.0。 要求: 项目: >无法在org.jetbrains.kotlinx的以下变体之间进行选择:kotlinx datetime:0.1.0: -jsIr运行时 -JSL遗留运行时 所有这些都符合消费者属性: -变体“jsIr运行时”功能org.jetbrains.kotlinx:kotlinx日期时间:0.1.0: -不匹配的属性: -找到org.gradle.status“release”,但不是必需的。 -找到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日期时间:0.1.0: -不匹配的属性: -找到org.gradle.status“release”,但不是必需的。 -找到org.jetbrains.kotlin.js.compiler“legacy”,但不是必需的。 -兼容属性: -必需的org.gradle.usage“kotlin runtime”,并找到兼容值“kotlin runtime”。 -必需的org.jetbrains.kotlin.platform.type“js”,并找到兼容的值“js”

  • 尝试: 使用--stacktrace选项运行以获取堆栈跟踪。使用--info或--debug选项运行以获得更多日志输出。使用--scan运行以获得完整的洞察力

  • 得到更多的帮助

构建在7秒内失败


将生成扫描发布到scans.gradle.com需要接受在中定义的gradle服务条款。你接受这些条件吗?[是,否]

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

出现此解决问题的原因是Kotlin 1.4为Kotlin/JS引入了两个不同编译器后端之间的选择,而Kotlin 1.3.xx中没有这种选择

解决方法:

要使用这些库,请在项目的根目录中创建一个名为“工作区”的文件,该文件位于项目的根目录中,并添加以下代码:

    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")
    }
}
我没有找到解决办法,我在slack channel里被人指了指 您可以跟踪具有解决方案的链接

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