SBT:如何为多项目设置通用scala版本

SBT:如何为多项目设置通用scala版本,scala,sbt,Scala,Sbt,我在IntellJ Idea有一个多SBT项目。我的根目录中的SBT文件如下所示: 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 commo

我在IntellJ Idea有一个多SBT项目。我的根目录中的SBT文件如下所示:

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\u learn
/scalaz\u 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
,并尝试查找为
2.10
构建的
公共项目,而我没有该项目

我总是忘记在新创建的项目中添加
scalaraversion:=“2.11.7”
,这一直困扰着我。我还希望使用一些默认数据生成sbt
build.sbt
,但它要求我不要忘记手动创建它

  • 有没有办法在一个地方为所有项目和子项目设置单一的scala版本?我想我可以在根定义中添加一个单独的
    lazy val commonSettings=Seq{scalaVersion:=“2.11.7”}
    。对于每个
    lazy val项目
    定义,我应该在末尾添加
    .settings(commonSettings)
    。这很好,但看起来还不够漂亮-我应该为每个项目定义这样做。有更好的办法吗

  • 是否有任何方法可以为新创建的项目创建模板,因此,当我只放置行
    lazy val newProject=…
    时,它将在那里放置一个适当的
    build.sbt
    文件,其中包含我想要的内容

  • 使用

    在root
    build.sbt中使用

    在root
    build.sbt

    scalaVersion in ThisBuild := "2.11.7"