我正在阅读Maven文档,偶然发现了super -jar这个名字。

超级罐子是什么意思?它有什么特点/优势?


当前回答

不同的名称只是包装java应用程序的方式。

瘦-只包含你字面上输入到你的代码编辑器的位,没有其他。

瘦-包含以上所有的应用程序,加上应用程序对你的应用程序的直接依赖(db驱动程序,实用程序库等)。

中空-薄的逆-只包含运行应用程序所需的位,但不包含应用程序本身。基本上是一个预先打包的“应用程序服务器”,您可以稍后将应用程序部署到其上,其风格与传统Java EE应用程序服务器相同,但有重要区别。

Fat/Uber -包含你自己写的部分,加上你的应用程序的直接依赖项,再加上运行你的应用程序“自己”所需的部分。

来源:Dzone的文章

转载自:https://stackoverflow.com/a/57592130/9470346

其他回答

对于使用SpringBoot的Java开发人员来说,ÜBER/FAT JAR通常是maven的包阶段的最终结果(如果使用gradle则是构建任务)。

在Fat JAR中,您可以找到一个META-INF目录,其中包含MANIFEST。MF文件与有关Main类的所有信息一起存在。更重要的是,在同一级别的META-INF目录中,您可以找到BOOT-INF目录,其中包含目录库,并包含作为应用程序依赖项的所有.jar文件。

根据super - jar文档方法: 有三种构造super - jar的常用方法:

解包所有JAR文件,然后将它们重新打包到一个JAR中。 工具:Maven汇编插件,Classworlds Uberjar

阴影与无阴影相同,但重命名(即“阴影”)所有依赖的所有包。 工具:Maven阴影插件

JAR中的JAR最后的JAR文件包含嵌入其中的其他JAR文件。 工具:Eclipse JAR文件导出器,One-JAR。

不同的名称只是包装java应用程序的方式。

瘦-只包含你字面上输入到你的代码编辑器的位,没有其他。

瘦-包含以上所有的应用程序,加上应用程序对你的应用程序的直接依赖(db驱动程序,实用程序库等)。

中空-薄的逆-只包含运行应用程序所需的位,但不包含应用程序本身。基本上是一个预先打包的“应用程序服务器”,您可以稍后将应用程序部署到其上,其风格与传统Java EE应用程序服务器相同,但有重要区别。

Fat/Uber -包含你自己写的部分,加上你的应用程序的直接依赖项,再加上运行你的应用程序“自己”所需的部分。

来源:Dzone的文章

转载自:https://stackoverflow.com/a/57592130/9470346

一个自包含的、可执行的Java存档。在WildFly Swarm uberjars的情况下,它是一个单独的.jar文件,包含您的应用程序,WildFly支持它所需的部分,一个内部Maven依赖库,加上一个引导它的shim。看到这个

乌巴罐也被称为肥罐,即罐与依赖。 制作超级罐子有三种常见的方法:

Unshaded: Unpack all JAR files, then repack them into a single JAR. Works with Java's default class loader. Tools maven-assembly-plugin Shaded: Same as unshaded, but rename (i.e., "shade") all packages of all dependencies. Works with Java's default class loader. Avoids some (not all) dependency version clashes. Tools maven-shade-plugin JAR of JARs: The final JAR file contains the other JAR files embedded within. Avoids dependency version clashes. All resource files are preserved. Tools: Eclipse JAR File Exporter

更多的