Зависит от мультиплатформенного модуля Kotlin от JS от JVM

У меня есть проект Kotlin Multiplatform с общим модулем JS и JVM. Модуль JVM использует JavaFX WebView для отображения графического интерфейса. Этот 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 ответ

Решение

Вот что должно работать:

  1. Создайте конфигурацию для myproject-js зависимость:

    configurations {
        js
    }
    
  2. Добавьте зависимость проекта к этой конфигурации:

    dependencies {
        js project(":myproject-js")
    }
    
  3. Добавьте файлы конфигурации в processResources задача с .from(...)и соответствующая зависимость сборки:

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

Затем, всякий раз, когда вы создаете проект JVM, файлы модуля JS распаковываются в каталог вывода ресурсов, а затем упаковываются в JAR.

Другие вопросы по тегам