当前位置: 首页 > 知识库问答 >
问题:

Gradle中的uberJar、fatJar和shadowJar有什么不同?

庞书
2023-03-14

我想知道我什么时候该用哪个。我明白它们都集合了所有的依赖类,但是它们彼此之间有什么不同呢?

共有1个答案

梁丘柏
2023-03-14

这些术语有时可互换使用,但通常指:

>

  • fat jar(也称为Uber jar)-用于描述一个jar,它将所有来自依赖jar的类直接压缩在正确的目录结构中,而不是在其他jar中。这里有一个很好的解释。

    Shaded jar(或Shaded classes)--通常指改变类字节码的过程,以改变类的包名,并修改它在jar中的使用。它用于将类链接到其他类的特定版本,并避免版本冲突。它可以通过Maven Shade插件创建。带阴影的jar不需要包含所需的所有依赖项。

  •  类似资料:
    • 我遇到一个问题,gradle fatJar/uberJar在尝试运行jar时导致以下异常: 简单的jar任务 没有问题(直到它开始需要依赖项)。 我假设这与我的一个依赖项更改类路径有关,但我不确定为什么会发生这种情况。 build.gradle的相关部分 Gradle构建文件在这里(与代码的其余部分): https://github.com/domhauton/membraned/blob/mas

    • 问题内容: 我是Gradle新手。我想构建一个uberjar(AKA fatjar),其中包括项目的所有传递依赖项。我需要在“ build.gradle”中添加哪些行? 这是我目前拥有的:(我是从几天前的某个地方复制的,但是不要从那里收集。) 问题答案: 您是否尝试过 gradle食谱中 的fatjar示例? 您正在寻找的是gradle 的影子插件

    • 我正在尝试构建一个文件,其中包含MySQL驱动程序。到目前为止,我有一个非常基本的文件,它使用plugin帮助构建这个文件。 问题是,在运行任何与 Gradle 相关的内容时,我会收到此错误: 当试图用$找到爪哇时,我得到 使用i接收 到目前为止,这些信息对我都没有帮助,但我把它留在这里以防万一。 另外,当我使用< code>$ readlink -f $(哪个java)时,我收到: 在我看来,这

    • 我正在尝试构建一个文件,该文件包含的。到目前为止,我有一个非常基本的文件,它正在使用插件来帮助构建这个文件。 问题是,当运行与Gradle相关的任何内容时,我会收到以下错误: 尝试使用定位Java时,我得到了 并且使用接收 到目前为止,这些信息都对我没有帮助,但我把它留在这里以防万一。 此外,当我使用时,我会收到: 在我看来这是Gradle想要寻找的合适路径。 最后,在我的中,我将其放入文件中以设

    • 我不明白gradle插件块 和其他一个: 在第一个块中,我们有一些插件名称。在第二个一个包和版本。我不明白应该在哪里使用第一个块,什么时候使用第二个块。

    • 我已经为这个问题寻找了4天的解决方案,但没有成功, 首先做正常的Gradle构建任务产生了一个很小的7kB jar文件,显然不起作用,然后我为主类添加了jar配置: 现在是2MB! 仍然不够好,然后我找到了法特加/uberJar/影子任务,据说是同样的事情的同义词,所以我试着在另一个小的RMI应用程序上清理法特加任务,它将在服务器上运行,它工作得很好,将其复制到主应用程序,它产生和60MB jar