注意:在将此问题标记为重复之前,请确保您知道可执行JAR 与fully executable SpringBoot JAR之间的区别。
The official Spring Boot documentation介绍了如何构建完全可执行JAR。然后生成的JAR文件可以从/etc/init.d/
链接,并作为普通的unix服务启动/停止/重新启动/统计,而无需其他脚本或工具,如JSVC。
但是生成的JAR包含所有库,并且可以足够大(在我的情况下为70Mb +)。
我想生成没有库的完全可执行JAR,但是能够在Linux上以SystemV服务的形式运行它并以某种方式链接外部库(JAR)。
更新
我想减少工件尺寸,以加快部署 - >测试 - >修复周期。有时我通过移动网络工作,大文件大小会大大降低我的工作速度。
如果没有简单的配置属性或配置文件或命令行选项,我会使用一种黑客。
一开始,我可以生成包含所有依赖项的构建。 然后我可以解压缩它并将所有库移动到一个特殊的文件夹。
然后我需要以某种方式将其作为完全可执行文件再次打包并运行并指向带有库的文件夹。
我认为可以使用jar
实用程序完成此操作,因为file
实用程序将完全可执行的jar识别为data
$ file fully-executable.jar
file fully-executable: data
与通常的jar不同
$ file usual.jar
usual.jar: Java Jar file data (zip)