sbt-pack和sbt-assembly之间的关键区别是什么?

我刚刚绊倒了sbt-pack插件。开发流似乎是steady.令人惊讶的是,我相信唯一的插件(引用sbt-pack的标题)“创建可分发的Scala包”。是sbt-assembly(其他功能之一)。

插件之间的主要区别是什么?我什么时候应该使用一个?

(免责声明:我维护sbt-assembly)

sbt装配

sbt-assembly创建一个胖JAR – 单个JAR文件,其中包含代码和库中的所有类文件。通过进化,当多个JAR提供相同的文件路径(如config或README文件)时,它还包含解决冲突的方法。它涉及到解压缩所有的库JAR,所以有点慢,但是这些都被缓存。

sbt包

sbt-pack保留所有库JAR的完整性,将它们移动到目标/包目录中(而不是通常存在的ivy缓存),并为您运行一个shell脚本。

sbt本机包装

sbt-native-packager类似于sbt-pack,但是它是由sbt committer Josh Suereth启动的,现在由高度能力的Nepomuk Seiler(也称为muuki88)维护。该插件支持许多格式,如Windows msi文件和Debian的deb文件。最近添加的是Docker images的支持。

所有这些都是创建部署映像的可行手段。在某些情况下,如将应用程序部署到Web框架等中,如果处理一个文件而不是十几个文件,这可能会使事情更容易。

敬请提及:sbt-progardsbt-onejar

http://stackoverflow.com/questions/22556499/what-are-key-differences-between-sbt-pack-and-sbt-assembly

本站文章除注明转载外,均为本站原创或编译
转载请明显位置注明出处:sbt-pack和sbt-assembly之间的关键区别是什么?