我试图通过sbt汇编从单个项目生成几个罐子。每个都包含一些依赖项。
到目前为止,我发现只有this QA接近我正在寻找的东西。但是我不需要单独的配置,基本上当我运行程序集时,我只想生成所有不同的jar。
更具体。我想生成:
答案 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环境。