制作一个可下载平台特定库的 Java Runnable JAR

问题描述 投票:0回答:1

我有一个小型 Java (Kotlin) 应用程序。它需要一些大型库,例如 openblas 和 opencv。我想将其打包在一个拖放式可执行 JAR 文件中,但是当我构建 fatJar 时,它包含所有可能平台的库,最终超过 600MB。

这也太大了吧!我更喜欢一个小型应用程序,当您第一次运行它时,它会下载适合用户平台的库。这是一个标准吗?我不能假设最终用户将安装 Gradle 或 Maven,只是他们安装了 JRE。

我尝试了我认为是最新的 fatJar

build.gradle.kts

val fatJar = task("fatJar", type = Jar::class) {
    archiveBaseName.set("${project.name}-fat")
    manifest {
        attributes["Implementation-Title"] = project.name
        attributes["Implementation-Version"] = project.version
        attributes["Main-Class"] = application.mainClass
    }
    duplicatesStrategy = DuplicatesStrategy.EXCLUDE
    from(configurations.runtimeClasspath.get().map { if (it.isDirectory) it else zipTree(it) })
    with(tasks["jar"] as CopySpec)
}

然后检查 JAR 文件中有哪些库:它表现正确,并且没有复制 Kotlin 版本或其他任何不好的东西。

download fatjar javaexec-gradle-plugin
1个回答
0
投票

我相信https://github.com/JetBrains/compose-multiplatform/blob/master/tutorials/Native_distributions_and_local_execution/README.md#basic-usage就是我正在寻找的。我还没有让它工作,但听起来像是功能集。

© www.soinside.com 2019 - 2024. All rights reserved.