Почему 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

2 ответа

Решение

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

Для всех плагинов в вашем проекте вы устанавливаете 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's only for demo purposes
addSbtPlugin("com.timushev.sbt" % "sbt-updates" % "0.1.0", "0.12.2", "2.5")
Другие вопросы по тегам