SBT:两个具有不同依赖关系的Scala版本的交叉构建项目

时间:2017-06-24 16:53:42

标签: scala sbt cross-build

我有以下用例。我想为scala 2.10和2.12构建相同的Scala项目。这样做时,我想指定2.10版本的一些依赖项,而我希望在jar中为2.12编译这些依赖项。

我正在查看SBT的文档,并发现如何将build.sbt拆分为单独的声明,但这些声明总是被提及为子模块。在我的情况下,我想交叉构建整个应用程序 - 而不是它的具体部分。

任何提示或资源将不胜感激。

1 个答案:

答案 0 :(得分:2)

您可以根据Scala版本汇编libraryDependencies。简化示例,可能无法构建..:

libraryDependencies := {
  CrossVersion.partialVersion(scalaVersion.value) match {
    case Some((2, scalaMajor)) if scalaMajor == 12 =>
      libraryDependencies.value ++ Seq(
        "your.org" %% "your-lib" % "1.0")
    case Some((2, scalaMajor)) if scalaMajor == 10 =>
      libraryDependencies.value ++ Seq(
        "your.org" %% "your-lib" % "1.0" % provided)
    case _ => Seq()
  }
}

有关完整示例,请参阅http://github.com/scala/scala-module-dependency-sample