kotlin - Kotlin/JS 中不提供依赖项

标签 kotlin gradle dependencies kotlin-js

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

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

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

没有显示错误,IDE 似乎可以正确加载依赖项,但它根本没有在我的代码库中公开。有没有办法查看此依赖项失败的原因?该库是否存在明显的问题,无法在 K/JS 中工作?

最佳答案

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/ 处创建工件。 (它们也是一个在端口 8080 启动服务器的 run 任务)

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())
}

关于kotlin - Kotlin/JS 中不提供依赖项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62903728/

相关文章:

java - E/RecyclerView 错误 : No adapter attached; skipping layout

kotlin - 为文件顶层实现 IntelliJ Completion Contributor

java - 运行最新的 Jetty 版本会破坏我的构建

c# - 如何绘制项目之间的引用图?

java - 使用maven只部署部分依赖

android - 用户单击 kotlin 中的注销按钮后如何返回登录屏幕?

android - 使用自定义 Gson 反序列化器反序列化 JSON 响应时出错

android - 生成签名的APK时出错:重复项:android/support/v7/util/ThreadUtil $

groovy - 依赖于扩展对象的任务的 Gradle 插件最佳实践

gradle - Gradle&Java:将文件添加为依赖项