SBT: кросс-сборка для двух версий Scala с разными зависимостями

У меня есть следующий вариант использования. Я хотел бы построить один и тот же проект Scala для Scala 2.10 и 2.12. При этом я хотел бы указать некоторые зависимости для версии 2.10, как предусмотрено, тогда как я хотел бы, чтобы они были скомпилированы в jar для 2.12.

Я смотрел на документы SBT и нашел, как я могу разделить build.sbt в отдельные объявления, но они всегда упоминаются как подмодули. В моем случае я хотел бы создать кросс-сборку всего приложения, а не отдельных его частей.

Любые советы или ресурсы будут оценены.

1 ответ

Решение

Вы можете собрать библиотечные зависимости в зависимости от версии Scala. Упрощенный пример, возможно, не построить..:

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

Другие вопросы по тегам