gradle Fat jar vs normal jar依赖解析

fkvaft9z  于 2023-08-06  发布在  其他
关注(0)|答案(1)|浏览(121)

让我们举个例子:构建一个库 * A*,它有3个依赖项 * X,Y,Z*,我们创建2个JAR:* 常规 * 和 * 脂肪
我们有一个服务 B,其中我们首先导入普通JAR,然后导入FAT jar。
1.在第一种情况下(常规JAR),我们是否需要手动导入B中的所有依赖项(X,Y,Z),以便A工作(导入A的JAR不会自动导入其所有传递(直接)依赖项- X,Y,Z)?
/或/* 库将工作(调用它的方法),但试图从X,Y,Z调用方法将失败,我们将需要手动导入它们?
1.在第二个场景中,因为FatJAR已经嵌入了所有的依赖项,所以我们不需要添加任何依赖项,对吗?我们既可以使用A,也可以使用来自X、Y和Z的方法和类。
我在1)和2)中说的是对的吗?是这样的吗

运行时类路径vs编译类路径for normal vs FAT JAR

1.包括A的普通JAR作为对B的依赖:

  • 编译类路径是否只有A依赖项?
  • 运行时类路径是否有A、X、Y和Z依赖项?

1.包括A的FAT JAR作为B的依赖项:

  • 编译类路径是否有A、X、Y和Z依赖项?
  • 运行时类路径是否有A、X、Y和Z依赖项?

在这些场景中,编译类路径和运行时类路径看起来是这样的吗?

tzcvj98z

tzcvj98z1#

是的,你的理解是正确的。
综上所述,常规的**JARs需要您手动管理依赖项**,而**FAT JARs(或UBER JARs)将所有依赖项捆绑在一起**,减少了为每个依赖项管理单独的JAR文件的需求,从而更方便分发和部署。
然而,值得注意的是,使用FAT JARs可能会导致更大的JAR大小,这在某些情况下可能是一个问题。
看看这个

相关问题