Über 德语是 above 或者 over (它实际上和英语是同源的 over ). 因此,在本文中,uberjar是一个“over-jar”,比简单jar(a)高一级,定义为在一个jar文件中包含包及其所有依赖项的jar。这个名字可以被认为与超级极客、超人、超空间和元数据来自同一个稳定的空间,它们都有类似的“超越正常”的含义。 这样做的好处是,你可以分发你的uberjar,而完全不在乎目的地是否安装了依赖项,因为你的uberjar实际上没有依赖项。 你自己的东西在uberjar中的所有依赖也都在这个uberjar中。以及这些依赖项的所有依赖项。等等。 (a) 我可能不必向java开发人员解释jar是什么,但为了完整起见,我将包含它。它是一个java存档,基本上是一个文件,通常包含许多java类文件以及相关的元数据和资源。
7条答案
按热度按时间omhiaaxx1#
对于使用springboot的java开发人员来说,über/fat jar通常是
package phase
maven的(或build task
如果你使用gradle
).在这个胖jar里,你可以找到一个
META-INF
目录,其中MANIFEST.MF
文件包含所有关于主类的信息。更重要的是,在同一水平的META-INF
找到的目录BOOT-INF
目录中的目录lib
生活和包含所有.jar
作为应用程序依赖项的文件。taor4pac2#
根据uber-jar文档方法:构建uber-jar有三种常见方法:
解压所有jar文件,然后将它们重新打包到一个jar中。工具:maven汇编插件,classjar
着色与未着色相同,但重命名(即“着色”)所有依赖项的所有包。工具:maven shade插件
jar的jar最终的jar文件包含嵌入其中的其他jar文件。工具:eclipsejar文件导出器,一个jar。
nnt7mjpx3#
一个独立的、可执行的java存档。对于wildfly-swarm-uberjars,它是一个单独的.jar文件,其中包含您的应用程序、支持它所需的wildfly部分、一个内部maven依赖项存储库,以及一个引导所有应用程序的填充程序。看到这个了吗
6xfqseft4#
paxdiablo的定义非常好。
此外,如果你真的想发布一个软件,而不想让客户自己下载依赖项,那么请考虑交付一个uberjar有时是非常有用的。作为补偿,如果他们自己的策略不允许使用某些库,或者如果他们必须绑定一些额外的组件(slf4j、系统兼容libs、arch specialiez libs等等),这可能会增加他们的困难。
您可以执行以下操作:
基本上与maven组装插件
maven shade插件更进一步
一个更清洁的解决方案是分别提供他们的图书馆;maven shade插件已经为此预先配置了描述符。这并不复杂(使用maven及其插件)。
最后,一个非常好的解决方案是使用osgi包。这方面有很多好的教程:)
有关进一步配置,请阅读以下主题:
您应该在客户机jar中提供依赖库吗?
构建和部署clojure应用程序的最佳实践:好教程?
mqkwyuun5#
不同的名称只是打包java应用程序的方法。
skinny–只包含您在代码编辑器中输入的位,而不包含其他内容。
精简–包含以上所有内容以及应用程序对应用程序的直接依赖关系(db驱动程序、实用程序库等)。
hollow(thin的反义词)只包含运行应用程序所需的位,但不包含应用程序本身。基本上是一个预打包的“应用服务器”,您可以稍后将应用部署到其中,与传统的javaee应用服务器风格相同,但有重要区别。
fat/uber–包含你自己编写的代码,加上你的应用程序的直接依赖性,再加上“独立”运行你的应用程序所需的代码。
来源:dzone的文章
转载自:https://stackoverflow.com/a/57592130/9470346
uklbhaso6#
ubar jar也称为fat jar,即带有依赖项的jar。
构建uber jar有三种常见方法:
unshaded:解压所有jar文件,然后将它们重新打包到一个jar中。使用java的默认类加载器。工具maven程序集插件
着色:与未着色相同,但重命名(即“着色”)所有依赖项的所有包。使用java的默认类加载器。避免某些(并非所有)依赖关系版本冲突。工具maven shade插件
jar-of-jars:最终的jar文件包含嵌入其中的其他jar文件。避免依赖关系版本冲突。保留所有资源文件。工具:eclipsejar文件导出器
更多
63lcw9qa7#
Über
德语是above
或者over
(它实际上和英语是同源的over
).因此,在本文中,uberjar是一个“over-jar”,比简单jar(a)高一级,定义为在一个jar文件中包含包及其所有依赖项的jar。这个名字可以被认为与超级极客、超人、超空间和元数据来自同一个稳定的空间,它们都有类似的“超越正常”的含义。
这样做的好处是,你可以分发你的uberjar,而完全不在乎目的地是否安装了依赖项,因为你的uberjar实际上没有依赖项。
你自己的东西在uberjar中的所有依赖也都在这个uberjar中。以及这些依赖项的所有依赖项。等等。
(a) 我可能不必向java开发人员解释jar是什么,但为了完整起见,我将包含它。它是一个java存档,基本上是一个文件,通常包含许多java类文件以及相关的元数据和资源。