【发布时间】:2017-08-17 06:30:23
【问题描述】:
我有一个像这样定义root 的子项目:
lazy val root = (project in file(".")).enablePlugins(PlayScala)
并且没有定义任何其他设置。
在我的主要项目中,我这样引用它:
lazy val mylib = (project in file("mylib"))
lazy val myapp = (project in file("myapp")).dependsOn(mylib)
问题在于以这种方式引用,mylib 是使用 Scala 2.10 构建的,因为它没有指定 scalaVersion 而 2.10 是 SBT 的默认值。
如果我尝试覆盖这样的任何设置:
lazy val mylib = (project in file("mylib")).settings(Seq(scalaVersion := "2.11.8"))
他们被忽略了。
但是,如果我从子项目的 build.sbt 中删除 lazy val root = ...,则从主构建文件传递的设置将按预期工作。然而,这会破坏子项目的独立构建,因为必须在主文件中启用 PlayScala 插件。
那么我怎样才能引用这样的项目并覆盖一些设置呢?
我可以通过全局更改设置(即scalaVersion in ThisBuild)来解决此问题,但我希望能够覆盖其他内容,例如在这种情况下固定为root 的项目ID。
【问题讨论】: