繁体   English   中英

为可执行 JAR 文件提供外部依赖项

[英]Provide external dependencies to executable JAR file

我有一个简单的实用程序 Java 程序,它使用依赖项,它本身有很多其他依赖项。 我需要将此实用程序打包在一个可执行的 jar 文件中。 我使用 Gradle 和我的 JAR 任务如下所示:

jar {
    version = ''
    baseName = 'rpc_utility'
    duplicatesStrategy = DuplicatesStrategy.EXCLUDE
    manifest {
        attributes 'Main-Class': 'com.example.rpcclient.MainKt'
    }
    zip64=true

    from { (configurations.compile).collect { it.isDirectory() ? it : zipTree(it) } }
}

这实际上是这样做的,我得到了一个有效的 JAR 文件,但它变成了 ~60MB。 问题是,在这个 jar 文件假设运行的环境中,还有另一个胖 jar,它保证拥有这个文件所需的所有依赖项。 因此,如果有办法“告诉”我的实用程序 jar 文件,它需要的所有依赖项都在那里,打包在相邻的 jar 文件中,我可以把它做成一个很小的几千字节 Z68995FCBF432492DAC40Z4 文件。

那么有没有办法做到这一点? PS我google了很多,也有类似的问题,但似乎没有一个和我的一样。

您实际上可以在可执行 jar 的清单中定义类路径。 像这样:

manifest {
  attributes(
     'Main-Class': 'com.example.rpcclient.MainKt',
     "Class-Path": "lib/all-dependencies.jar"
  )
}

那么如果你把你的 all-dependencies.jar 文件放到一个名为“lib”的目录中,那么这应该可以工作。 在这种情况下,您的 jar 和 lib 目录应该位于某个目录级别。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM