如何配置 SBT 为依赖项和应用程序代码生成单独的 jar?

How to configure SBT to produce separate jars for dependencies and application code?

我正在使用 SBT 作为 spark 项目的构建工具。我可以使用 sbt-assembly 插件为我的依赖项创建一个胖罐子。

但是,这会生成一个 ~120M 的 jar,其中大部分是我需要不断上传到 S3 以 运行 我的代码的依赖项——这需要 3-5 分钟才能完成。时间不多,但相当烦人。

如果让 SBT 生成一个依赖项的 jar(很少更改),以及我的应用程序代码的一个小 jar,我应该可以在几秒钟内上传,这会大大改善事情。

这可能吗?我对 SBT 还很陌生。

sbt-assembly 支持开箱即用 splitting project application jar from dependency jar。只生成依赖 jar execute

sbt assemblyPackageDependency

要仅使用您的项目应用程序代码生成 jar,请按如下方式定义 assemblyOption

assemblyOption in assembly := (assemblyOption in assembly).value.copy(includeScala = false, includeDependency = false)

并照常执行sbt assembly