Scala 多个工件中的sbt程序集包依赖关系

Scala 多个工件中的sbt程序集包依赖关系,scala,sbt,sbt-assembly,Scala,Sbt,Sbt Assembly,我正试图用sbt汇编从单个项目生成几个JAR。每个都包含一些依赖项 到目前为止,我只发现这是接近我所寻找的。然而,我不需要有单独的配置,基本上当我运行assembly时,我只想生成所有不同的JAR 更具体一些。我想生成: 一个包含我的代码和一些一般依赖项的jar 一个具有hadoop依赖项的jar如果不深入研究复杂的sbt配置,您可以尝试另一种方法。hadoop依赖项是标准的,您可以在构建中将它们标记为提供的,以排除它们 "org.apache.hadoop" % "hadoop-client

我正试图用sbt汇编从单个项目生成几个JAR。每个都包含一些依赖项

到目前为止,我只发现这是接近我所寻找的。然而,我不需要有单独的配置,基本上当我运行assembly时,我只想生成所有不同的JAR

更具体一些。我想生成:

  • 一个包含我的代码和一些一般依赖项的jar

  • 一个具有hadoop依赖项的jar如果不深入研究复杂的sbt配置,您可以尝试另一种方法。hadoop依赖项是标准的,您可以在构建中将它们标记为
    提供的
    ,以排除它们

    "org.apache.hadoop" % "hadoop-client" % "2.6.0" % "provided"
    
    对于Scala,库jar也是标准的,可以由“用户”单独下载。要将其从fat jar中移除,请使用以下设置(assembly 0.13.0):

    然后,fat jar的用户被要求在类路径中同时提供Scala和Hadoop库


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

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

    "org.apache.hadoop" % "hadoop-client" % "2.6.0" % "provided"
    
    对于Scala,库jar也是标准的,可以由“用户”单独下载。要将其从fat jar中移除,请使用以下设置(assembly 0.13.0):

    然后,fat jar的用户被要求在类路径中同时提供Scala和Hadoop库


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

    是的,实际上这就是我正在做的事情(依靠EMR提供Hadoop和spark)。但是有一种新情况,我想从网关运行一些代码。首先,我更愿意尝试提供应用程序包装所需的一切,如果它不起作用,请与EMR做同样的事情。是的,实际上这就是我正在做的(依靠EMR提供hadoop和spark)。但是有一种新情况,我想从网关运行一些代码。首先,我更愿意尝试提供应用程序包装所需的一切,如果它不起作用,请与EMR相同。