我试图了解什么时候应该使用哪个。我知道它们都组装了所有依赖类,但是它们之间有什么不同呢?
最佳答案
这些术语有时可以互换使用,但通常指的是:
Fat jar(也称为 Uber jar) - 用于描述一个 jar,该 jar 中的所有依赖 jar 中的类都直接压缩在正确的目录结构中,而不是在其他 jar 里。有很好的解释here .
Shaded jar(或shaded classes)——通常是指改变classes 字节码以改变classes 的包名的过程,并且也修改它在jar 中的使用。它用于将类链接到其他类的特定版本并避免版本冲突。它可以由 Maven Shade Plugin 创建.阴影 jar 不需要包含所有需要的依赖项。
gradle shadow plugin可以生成 fat jars 和 shaded jars,对于 maven shaded 插件也是如此。我想这就是人们混合这些术语的原因。
注意:我见过将 fat jar 称为 jar 的案例,其中包含依赖项作为打包的 jar。
关于java - Gradle 中的 uberJar、fatJar 和 shadowJar 有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33779185/