【问题标题】:Dependency not available in Kotiln/JSKotlin/JS 中不可用的依赖项
【发布时间】:2020-07-19 15:45:02
【问题描述】:

我正在尝试在 Kotlin/JS 项目中使用名为 KSVG 的库。维护者已尝试设置 K/JS 支持,但无法正常工作。在 IntelliJ 中,我将以下 repo 和依赖项添加到我的 build.gradle.kts

repositories {
    jcenter()
}
dependencies {
    implementation(kotlin("stdlib-js"))

    implementation("com.github.nwillc", "ksvg", "2.2.0")
}

没有显示错误,IDE 似乎可以正确加载依赖项,但它根本没有在我的代码库中公开。有没有办法查看为什么这种依赖失败了?库是否存在明显的问题,阻止它在 K/JS 中工作?

【问题讨论】:

  • 您是使用 webpack 构建还是手动将依赖项添加到生成的工件中? (例如在 index.html 中)
  • 两者都没有,在将其添加到依赖项列表并同步 gradle 后,我试图从我的主 kotlin 包中访问它,但这可能是对如何包含 K/JS 依赖项的误解,即我为什么在这里。

标签: kotlin gradle dependencies kotlin-js


【解决方案1】:

K/JS 依赖类似于 K/JVM 依赖。通过将它们添加到您使用的 gradle 项目并编译它们。但是要运行项目,您需要运行时依赖项。 K/JVM 中默认的run 任务会自动将运行时依赖项添加到类路径中。但如果你想创建一个 jar,你必须手动执行此操作或创建一个 fat jar。

在 K/JS(对于浏览器,不确定 nodejs)中,它们不是包含运行时依赖项的默认运行任务。您必须手动添加它们。他们有两种方法。

  1. runtimeClasspath任务手动grep依赖js文件
  2. 使用 webpack 构建(类似于 fat jar 方法)

这是 webpack 构建的一个工作示例。 build 任务在./build/distributions/ 创建人工制品。 (他们也是一个run 任务,在端口 8080 启动服务器)

build.gradle.kts

plugins {
    kotlin("js") version "1.3.72"
}

repositories {
    mavenCentral()
    maven("https://dl.bintray.com/nwillc/maven")
}

dependencies {
    implementation(kotlin("stdlib-js"))
    testImplementation(kotlin("test-js"))

    implementation("com.github.nwillc:ksvg-js:3.0.0")
}

kotlin.target.browser {}

main.kt

import com.github.nwillc.ksvg.elements.SVG
import kotlin.browser.document

fun main() {
    val svg = SVG.svg(false) {
        circle {
            cssClass = "black-stroke"
            id = "face"
            cx = "180"
            cy = "140"
            r = "80"
            fill = "#aa450f"
        }
    }
    document.write(svg.toString())
}

【讨论】:

  • 感谢您对依赖项的构建过程的解释。我已经使用了您在示例中显示的 maven repo 方法,但 IntelliJ 仍然无法识别任何以名称 com.github 开头的包来导入,当我键入 SVG 时它也无法自动完成。
  • 我对 ksvg 不是很熟悉,但可能版本 3 中添加了 js 支持。至少版本 3 之前的版本没有 jvm 和 js 的拆分依赖项(但这对于多平台库来说很典型)。因此,依赖项更新可能会有所帮助。我在一个干净的项目中测试了发布的代码 sn-ps,所以如果这不起作用,我不知道它是什么(使用 gradle 6.5)。
  • 我错过了您添加了-js 后缀。我之前在没有正确的 repo 声明的情况下测试了该工件名称,但在测试时忘记将其切换回来。作品!谢谢。
猜你喜欢
  • 1970-01-01
  • 2022-10-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-07-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多