【发布时间】:2020-11-16 17:25:27
【问题描述】:
我有一个简单的实用 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 文件假设运行的环境中,还有另一个 fat jar,它保证拥有这个 jar 需要的所有依赖项。 因此,如果有一种方法可以“告诉”我的实用程序 jar 文件,它需要的所有依赖项都在那里,打包在相邻的 jar 文件中,我可以将它变成一个很小的几千字节的 jar 文件。
那么有没有办法做到这一点? 附言我google了很多,也有类似的问题,但似乎没有一个和我的一样。
【问题讨论】:
标签: java jar classpath executable-jar