我在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_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" }
根定义。对于每个lazy val project
定义,我应该在最后添加.settings(commonSettings)
。这很好,但仍然看起来不够漂亮 - 我应该为每个项目定义执行此操作。有更好的方法吗?
有没有办法可以为新创建的项目创建模板,所以当我只是放行lazy val newProject = ...
时,它会在那里放一个合适的build.sbt
文件,里面有我想要的内容
答案 0 :(得分:3)
使用
scalaVersion in ThisBuild := "2.11.7"
在根build.sbt
。