Как sbt выбирает, какую версию Scala использовать? - программирование
Подтвердить что ты не робот

Как 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 использоваться во всех моих проектах?

4b9b3361

Ответ 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.