我正在尝试使用一个名为 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)中,它们不是包含运行时依赖项的默认运行任务。您必须手动添加它们。有两种方法可以做到这一点。
- 从
runtimeClasspath
任务中手动 grep 依赖项 js 文件 - 使用 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/