![](/img/trans.png)
[英]Gradle fatJar/uberJar causing Could not find or load main class
[英]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.