繁体   English   中英

Gradle 中的 uberJar、fatJar 和 shadowJar 有什么区别?

[英]What are the differences between uberJar, fatJar and shadowJar in Gradle?

我试图了解我什么时候应该使用哪个。 我知道它们都组装了所有的依赖类,但是它们之间有什么不同?

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

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

  • Shaded jar (或shaded classes) - 通常是指更改类字节码以更改类的包名称的过程,并且在jar中使用时也会进行修改。 它用于将类链接到其他类的特定版本并避免版本冲突。 它可以由Maven Shade Plugin创建。 阴影 jar 不需要包含所有需要的依赖项。

gradle shadow 插件可以生成fat jar 和shaded jar,maven shaded 插件也一样。 我想这就是人们混合使用这些术语的原因。

注意:我见过将 fat jar 称为 jar 的情况,其中包含依赖项作为打包的 jars。

没有任何区别。 这些术语都是彼此的同义词。

术语“uber-jar”可能在文档中更常用(以maven-shade-plugin文档为例),但“fat-jar”也被广泛使用。

Uber Jar、Fat Jar 和 Shadow Jar 是同义词。

所有三个任务都做同样的事情 - 您可以选择您个人最喜欢的术语。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM