我想知道什么时候应该使用sbt assembly
,什么时候应该使用sbt compile && sbt package
?
我正在使用 Intellij IDEA 在我的本地计算机上编写一个程序,并使用 sbt compile && sbt package
对其进行编译,然后将其上传到集群并运行它使用 spark-submit
。这是最好的方法吗?什么时候应该使用 sbt 汇编
?
最佳答案
I would like to know when should I use
sbt assembly
and whensbt compile && sbt package
?
引用 sbt-assembly的网站(给出 sbt assembly
):
The goal is simple: Create a fat JAR of your project with all of its dependencies.
build.sbt
中的任何依赖项(未标记为 Provided
)将成为称为 uber-jar 的最终 jar 文件的一部分。
您想使用该插件至少有两个原因:
- 将所有依赖项捆绑在一个 jar 文件中,这样更容易部署到生产环境(类似于 Docker 镜像)
- 使用一个 Spark 版本(例如 2.0.0)运行您的应用程序,并使用一个具有
spark-submit
的集群从 Spark 1.6.0
您使用 sbt compile && sbt package
编译和打包应用程序的类(顺便说一句,它不必使用 Spark)。该 jar 文件不包含应用程序的依赖项,因此必须以其他方式提供任何依赖项(并使部署变得有点棘手)。
注意:sbt compile && sbt package
只是 sbt compile package
的更长变体鉴于 compile
任务是 package
的依赖项只是 sbt package
.
关于scala - 何时使用 "sbt assembly"和 "sbt compile && sbt package"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53744950/