У меня есть проект с несколькими SBT в IntellJ Idea. Мой файл SBT в корневой директории выглядит следующим образом:SBT: Как установить общую версию scala для мультипроекта
name := "PlayRoot"
version := "1.0"
lazy val shapeless_learn = project.in(file("shapeless_learn")).dependsOn(common)
lazy val scalaz_learn = project.in(file("scalaz_learn")).dependsOn(common)
lazy val common = project.in(file("common"))
lazy val root = project.in(file(".")).aggregate(common, shapeless_learn, scalaz_learn)
scalaVersion := "2.11.7"
Тогда у меня есть папки для каждого из проектов: ./common
, ./shapeless_learn
, ./scalaz_learn
и каждый из них имеет свой собственную build.sbt
там. Но по какой-то причине мне нужно помещать в каждый из подпроектов build.sbt
файлы строку scalaVersion := "2.11.7"
.
Если я забыл сделать это, сборка завершается с сообщением:
Error:Unresolved dependencies: common#common_2.10;0.1-SNAPSHOT: not found
See complete log in ...
По какой-то причине, если я не указываю, что моя Scala версия 2.11.7
, SBT возвращается к 2.10
и пытается найти common
проект, который построен для 2.10
, которого у меня нет.
Я всегда забываю добавить scalaVersion := "2.11.7"
к вновь созданному проекту, и он продолжает прослушивать меня. Я также предпочел бы, чтобы sbt генерировал build.sbt
с некоторыми данными по умолчанию, но вместо этого он требует, чтобы я не забывал создавать его вручную.
Есть ли способ, которым я мог бы установить единую версию SCALA для всех проектов и подпроектов в одном месте?Я понял, что могу добавить отдельныйlazy val commonSettings = Seq { scalaVersion := "2.11.7" }
в определении root. И для каждого определенияlazy val project
я должен добавить в конце.settings(commonSettings)
. Это приятно, но все равно выглядит недостаточно красиво - я должен делать это для каждого определения проекта. Есть ли способ лучше?Есть ли способ создать шаблон для вновь созданного проекта, поэтому, когда я просто положу строку
lazy val newProject = ...
, он разместит соответствующий файлbuild.sbt
с содержимым, которое я хочу?