Почему SBT 0.12.2 разрешает плагины с Scala 2.9.2 и игнорирует scalaVersion в build.sbt?

SBT 0.12.2 всегда пытается разрешить подключаемые модули с помощью Scala 2.9.2 при использовании синтаксиса %% при импорте плагинов.

Я попытался установить более старые версии Scala в build.sbt, более новые версии и т.д. Даже каждый раз удаляя папку target... ничего, похоже, не имеет значения.

name := "Game"

version := "1.0"

scalaVersion := "2.9.1" // SBT is ignoring the scala version

Ответ 1

SBT recursive, поэтому вам нужно указать версию scala для проекта, которые строят ваш проект. Другими словами, вам нужно добавить соответствующий scalaVersion в файл plugins.sbt.

Ответ 2

Для всех плагинов в вашем проекте вы устанавливаете scalaVersion в project/plugins.sbt файле, который настраивает определение проекта сборки для вашего проекта и где вы определяете плагины.

$ cat project/plugins.sbt
scalaVersion := "2.9.3"

Однако существует возможность настроить более конкретную версию sbt и Scala для плагина.

Вместо использования addSbtPlugin, который принимает один ModuleID (построенный с помощью % и %%), используйте addSbtPlugin(dependency: ModuleID, sbtVersion: String) или даже addSbtPlugin(dependency: ModuleID, sbtVersion: String, scalaVersion: String), например

$ cat project/plugins.sbt
// It doesn't exist and it only for demo purposes
addSbtPlugin("com.timushev.sbt" % "sbt-updates" % "0.1.0", "0.12.2", "2.5")