Scala 使用SBT为不同的库版本生成

Scala 使用SBT为不同的库版本生成,scala,apache-spark,sbt,Scala,Apache Spark,Sbt,我试图用SBT构建Scala源代码,目标是相同的Scala版本,但库的不同版本。我的问题是: SBT是否支持这一点?(似乎不太可能) 如果没有,有没有一种方法可以在不太混乱构建脚本的情况下实现这一点 详情: 我正在使用不同版本的Spark和其他库构建集群。在这种情况下,这似乎是一个常见的用户案例 我找到了可能的解决办法: 使用Scala的不同次要版本,然后通过交叉构建分派不同版本的库。非常粗俗 对多个项目使用虚拟目录,将其源路径重定向到真实的源目录。这似乎是最有希望的,但我还没有尝试过 没有s

我试图用SBT构建Scala源代码,目标是相同的Scala版本,但库的不同版本。我的问题是:

  • SBT是否支持这一点?(似乎不太可能)
  • 如果没有,有没有一种方法可以在不太混乱构建脚本的情况下实现这一点

  • 详情: 我正在使用不同版本的Spark和其他库构建集群。在这种情况下,这似乎是一个常见的用户案例

    我找到了可能的解决办法:

  • 使用Scala的不同次要版本,然后通过交叉构建分派不同版本的库。非常粗俗
  • 对多个项目使用虚拟目录,将其源路径重定向到真实的源目录。这似乎是最有希望的,但我还没有尝试过

  • 没有sbt不支持这一点,但如果您想这样做,那么可以使用着色。 比如,如果我想使用两个不同库支持的两个不同版本的番石榴,那么使用番石榴着色如下:

        assemblyShadeRules in assembly := Seq(
         ShadeRule.rename("com.google.guava**" -> "shadeio.@1").inAll
        )
    

    我想从那以后你就没有得到更好的答案了吧?