为什么有些应用程序使用“胖罐”与普通应用程序相比?

时间:2015-10-12 22:44:33

标签: maven sbt sbt-assembly

使用胖罐比传统罐子有什么好处?

1 个答案:

答案 0 :(得分:1)

Fat Jar只是一个包装,它包含了自己的jar文件中的所有应用程序依赖项,例如:如果你的应用程序A属于commons-codec-xyz.jar,那么fat jar的包装就像< / p>

A-fat.jar
-
|
|-your.app.A.class
|-your.app.B.class
|-org.apache.commons.codec.Foo.class

这样一来,如果您的app jar应该是其他人应用程序类路径的一部分,那么它会让真的难以避免在运行时发生冲突

这只是管理类路径的一种更便宜的方式,因此当您启动应用程序时,您不必处理提供类路径条目,您可以这样做

java -cp .:/path/to/A-fat.jar your.Main

更好的包装是将罐子组装成具有以下结构的某种压缩格式(.zip,.tar.gz等)

A.jar
|
|--lib/
    |
    |-A.jar (only A's classes)
    |-common-codec-xyz.jar

这样它保持透明进入类路径也可以控制类路径的顺序,但你不能将它作为库分发,其他人可以在他们的应用程序中重用,为此你应该使用maven依赖照顾传递依赖

这一切都取决于应用,但这些是一般性的想法