在 Kotlin 1.3 多平台 gradle 项目中参考来自 kotlin-jvm 的 kotlin-js 资源
Posted
技术标签:
【中文标题】在 Kotlin 1.3 多平台 gradle 项目中参考来自 kotlin-jvm 的 kotlin-js 资源【英文标题】:Reference kotlin-js resources from kotlin-jvm in Kotlin 1.3 multiplatform gradle project 【发布时间】:2019-05-04 08:33:47 【问题描述】:在 Kotlin 1.2.61 中,可以有一个从 kotlin-jvm 模块到 kotlin-js 模块的 Gradle 依赖项。
这对于将生成的 js 文件包含在一个独立的 jar 中以将它们作为静态资源提供服务很有用。
但是,从 Kotlin 1.2.70 开始,有一个限制阻止将依赖项从 kotlin-jvm 模块添加到 kotlin-js 模块,请参阅:issue。
确保在 kotlin-jvm 模块之前构建 kotlin-js 模块的受支持方法是什么,以便可以将 kotlin-js dist 文件包含在 kotlin-jvm 模块中(大概不添加依赖项他们之间)?
【问题讨论】:
【参考方案1】:回答自己的问题,原来 Kotlin 前端插件已被弃用,支持的解决方案是使用 Multiplatform 插件。
我能够让它与 Kotlin Gradle DSL 一起使用,带有 Spring Boot 后端(包括能够从 IDE 调试)和 React 前端的热重载: https://github.com/alexoooo/sample-multiplatform-boot-react
proj-jvm build.gradle.kts 声明了对 proj-js 模块的依赖:
tasks.withType<ProcessResources>
val jsProject = project(":proj-js")
val task = jsProject.tasks.getByName("browserProductionWebpack") as KotlinWebpack
from(task.destinationDirectory!!)
into("public")
dependsOn(task)
请注意,Kotlin 多平台项目目前处于试验阶段,随着新 IR 的引入,一些细节可能会发生变化:https://blog.jetbrains.com/kotlin/2020/03/kotlin-1-4-m1-released/
【讨论】:
以上是关于在 Kotlin 1.3 多平台 gradle 项目中参考来自 kotlin-jvm 的 kotlin-js 资源的主要内容,如果未能解决你的问题,请参考以下文章
如何在多平台多项目 Kotlin 构建中向另一个项目的测试添加依赖项