我正在阅读Maven文档,遇到了“ uber-jar”名称。
uber-jar是什么意思,它的功能/优点是什么?
我正在阅读Maven文档,遇到了“ uber-jar”名称。
uber-jar是什么意思,它的功能/优点是什么?
Answers:
Über
是above
或的德语单词over
(实际上与英语同源over
)。
因此,在这种情况下,uber-jar是一个“ over-jar”,比简单的JAR (a)高出一个级别,JAR (a)定义为在一个JAR文件中同时包含您的软件包及其所有依赖项。可以认为该名称来自与ultrageek,超人,超空间和元数据相同的稳定器,它们的含义均类似“超出正常范围”。
其优点是,你可以发布你的尤伯杯罐子,并在所有与否依赖于目标安装不在乎,因为你的尤伯杯罐子其实有没有依赖关系。
您自己的东西在uber-jar中的所有依赖性也都在该uber-jar中。这些依赖项的所有依赖项也是如此。等等。
(a)我可能不必向Java开发人员解释什么是JAR,但是为了完整起见,我将其包括在内。它是一个Java存档,基本上是一个文件,通常包含许多Java类文件以及相关的元数据和资源。
über
并over
在老日耳曼一个系统的声乐转变也可在这些字对观察到的结果:geben/give
,leben/live
,haben/have
,heben/heave
等等。
Paxdiablo的定义确实很好。
此外,如果您确实要分发软件并且不希望客户必须自己下载依赖项,请考虑有时提供一个uber-jar很有意思。缺点是,如果他们自己的策略不允许使用某些库,或者必须绑定一些额外的组件(slf4j,与系统兼容的库,arch specialiez库等),这可能会给他们增加困难。
您可以执行以下操作:
一个更清洁的解决方案是单独提供它们的库。maven-shade-plugin已为此预先配置了描述符。这样做并不复杂(使用maven及其插件)。
最后,一个真正好的解决方案是使用OSGI Bundle。有很多很好的教程:)
有关进一步的配置,请阅读以下主题:
ubar jar也称为胖jar,即具有依赖性的jar。
有三种常见的构造uber jar的方法:
瘦 –仅包含您在代码编辑器中实际输入的位,而没有其他内容。
瘦 –包含以上所有内容以及应用对应用的直接依赖关系(数据库驱动程序,实用程序库等)。
空心 –薄的反面–仅包含运行应用程序所需的位,但不包含应用程序本身。基本上是预打包的“应用程序服务器”,您可以稍后将应用程序部署到该应用程序服务器,其样式与传统Java EE应用程序服务器相同,但有一些重要区别。
脂肪/尤伯杯 -包含位您字面上写自己PLUS您的应用程序的直接依赖PLUS为“自身”运行你的应用程序所需的位。
资料来源:Dzone的文章