sbt汇编包多个工件中的依赖项

时间:2015-07-15 11:58:02

标签: scala sbt sbt-assembly

我试图通过sbt汇编从单个项目生成几个罐子。每个都包含一些依赖项。

到目前为止,我发现只有this QA接近我正在寻找的东西。但是我不需要单独的配置,基本上当我运行程序集时,我只想生成所有不同的jar。

更具体。我想生成:

  • 一个包含我的代码和一些常规依赖项的jar
  • 一个带有hadoop依赖关系的jar < - 这是问题,因为我不知道如何说,生成另一个只有那些依赖关系的jar。
  • 一个带scala的罐子

1 个答案:

答案 0 :(得分:0)

不深入复杂的sbt配置,你可以尝试另一种方法。 hadoop依赖项是标准的,您可以在构建中将它们标记为provided以排除它们。

"org.apache.hadoop" % "hadoop-client" % "2.6.0" % "provided"

对于Scala,库jar也是标准的,可以由“用户”单独下载。要从胖罐中取出它,请使用以下设置(程序集0.13.0):

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

然后,您的胖jar的用户需要在类路径中提供Scala和Hadoop库。

例如,使用Spark时这是正确的方法,因为这两个库都是由Spark运行环境提供的。同样的逻辑适用于Hadoop MapReduce环境。