依赖 JVM 的 Kotlin 多平台 JS 模块

Depend on Kotlin Multiplatfrom JS Module from JVM

我有一个 Kotlin Multiplatform 项目,其中包含一个通用模块、一个 JS 模块和一个 JVM 模块。 JVM 模块使用 JavaFX WebView 来显示 GUI。但是,此 GUI 应作为 JS 模块实现。如何正确添加 JS 模块作为依赖项?我试过了

dependencies {
    compile project(":myproject-js")
}

但是,这不包括类路径中任何位置的生成的 JS 文件。 JS 模块确实创建了一个具有所需依赖项的 JAR 文件,但我找不到访问它们的方法。

我也试过简单地将 JS 文件复制到我的构建输出中,但它们仍然被忽略:

configurations {
    js
}

dependencies {
    js project(":myproject-js")
}

project.afterEvaluate {
    build.dependsOn copyResources
}

task copyResources(type: Copy) {
    dependsOn configurations.js

    into file("${project.buildDir}/resources")

    from {
        configurations.js.asFileTree.each {
            from (zipTree(it))
        }
        null
    }
}

有办法实现吗?

这是应该起作用的:

  1. myproject-js 依赖项创建配置:

    configurations {
        js
    }
    
  2. 将项目依赖项添加到该配置:

    dependencies {
        js project(":myproject-js")
    }
    
  3. 将配置文件添加到.from(...)processResources任务,以及相应的构建依赖:

    processResources {
        dependsOn configurations.js
        from(configurations.js.collect { zipTree(it) })
    }
    

然后,无论何时构建 JVM 项目,JS 模块的文件都会解压到资源输出目录中,然后打包到 JAR 中。