栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

什么是带阴影的JAR?超级JAR和着色JAR之间的区别/相似之处是什么?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

什么是带阴影的JAR?超级JAR和着色JAR之间的区别/相似之处是什么?

我将首先解释什么是超级JAR,因为这将支持阴影说明。

优步JAR

超级JAR是包含多个JAR(或更常见的是,其他多个JAR本身)的内容的JAR。

您的应用程序几乎肯定会使用其他软件包,并且这些软件包可能以JAR的形式提供。使用Maven时,这些依赖关系表示如下:

<dependency>    <groupId>...</groupId>    <artifactId>...</artifactId>    <version>...</version></dependency>

在运行时,您的应用程序将期望在其类路径中找到此JAR中包含的类。

您可以创建一个包含所有这些依赖JAR的所有类等的uber JAR,而不是将这些依赖JAR随您的应用程序一起提供,然后从该uber JAR中运行您的应用程序。

底纹

着色提供了一种创建uber JAR并重命名uber
JAR包含的包的方法。如果您的超级JAR可能被用作另一个应用程序中的依赖项,则存在超级JAR中的依赖类版本可能与另一个应用程序中的相同依赖项版本冲突的风险。通过在uber
JAR中重命名软件包,阴影有助于避免任何此类问题。

例如:

  1. 您创建一个包含该
    Foo
    库v1.0.0的超级JAR 。
  2. 其他人在其应用程序中使用您的超级JAR,
    Bar
  3. Bar
    应用程序仅依赖于
    Foo
    该库的v1.2.0,但依赖于该库。

现在,如果

Foo
我们的1.0.0版和1.2.0版之间存在冲突,则可能会出现问题,因为的所有者
Bar
不能依赖于将加载哪个版本,因此它们的代码将无法正常运行,或者您的代码-
在其应用程序中运行时-会表现不良。

阴影有助于避免诸如此类的问题,并且还允许提供者

Foo
明确说明其使用的依赖库的版本。

maven-shade-plugin
让你(一)创建一个超级JAR和(b)遮阳其内容。

摘要

创建uber JAR是简化部署过程的有用技术。

阴影是对超级JAR概念的扩展,通常只限于以下情况下的用例:

  • JAR是要在另一个应用程序/库中使用的库
  • JAR的作者希望确保JAR使用的依赖项在他们的控制之下
  • JAR的作者希望避免任何使用JAR的应用程序/库的“版本冲突”问题


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/508474.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号