Есть ли способ определить требуемую версию sbt в build.sbt?

В определении проекта Scala build.sbt можно ли определить минимальную версию sbt, которая требуется для создания проекта?

Ответ 1

project/build.properties позволяет принудительно использовать sbt для конкретной версии. Если текущая версия установленного sbt отличается - sbt сам загрузит (при необходимости) версию, которую вы указали там:

sbt.version=0.12.0

См., например, Hello. Таким образом, вы, возможно, установили несколько версий sbt в своей системе - это просто баночки, помещенные в папку .sbt/boot/scala-{scala.version required by this sbt}/org.scala-sbt/sbt/{sbt.version}. Фактически исполняемый файл Sbt ищет версию, указанную в project/build.properties или (если она не указана), самая высокая версия, установленная в системе.

P.S. С точки зрения sbt-launcher sbt является только одной зависимостью с малыми непересекающимися другими, такими как ansi.jar, поэтому определение диапазона версий, таких как [0.13.1, 0.13.8], не имеет большого смысла, поскольку оно было бы эффективным только для конфликтующих транзитивных отпечатков. В противном случае достаточно указать более высокую возможную версию (которая будет компилироваться) - вы даже можете выбрать некоторую версию, которую у вас уже есть (и обновить проект sbt таким образом).