Как sbt выбирает, какую версию Scala использовать?
У меня есть несколько проектов в моей сборке sbt. Я пытаюсь перейти на Scala 2.10 из 2.9.1, поэтому в моем файле build.sbt я положил
scalaVersion := "2.10.0"
Казалось, это сработало, потому что в моем проекте верхнего уровня в sbt я получаю:
> scala-version
[info] 2.10.0
Однако, когда я переключаюсь на один из других проектов:
> project web-client
[info] Set current project to web-client (in build file:/C:/Users/...
[web-client] $ scala-version
[info] 2.9.1
Вы видите, что версия теперь изменилась на 2.9.1! Как заставить ту же версию Scala использоваться во всех моих проектах?
Ответы
Ответ 1
Я обнаружил, что scalaVersion определяет, что ThisBuild установит его для всех подпроектов. Подробности здесь: http://www.scala-sbt.org/release/docs/Getting-Started/Multi-Project.html внизу, но вот что он говорит:
Чтобы установить его только один раз, достаточно записать в основном файле build.sbt следующую строку:
scalaVersion in ThisBuild := "2.10.0"
Ответ 2
SBT имеет версию по умолчанию Scala. Вам нужно добавить параметр scalaVersion
ко всем подпроектам, если вы хотите его изменить. Наиболее распространенный способ сделать это - иметь значение "общие настройки", которое добавляется ко всем проектам на корневом уровне, через project/Build.scala
.