我有一个子项目,定义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"))
他们被忽略了。
但是,如果我从子项目中移除lazy val root = ...
build.sbt
,则从主构建文件传递的设置按预期工作。这会打破子项目的独立构建,因为必须在主文件中启用PlayScala插件。
那么如何引用这样的项目并覆盖一些设置?
我可以通过全局更改设置来解决这个问题(例如scalaVersion in ThisBuild
),但我希望能够覆盖其他内容,例如项目ID,例如root
中的{{1}}情况下。
答案 0 :(得分:0)
我通常会覆盖这样的设置,并且工作正常。
lazy val mylib = (project in file("mylib")).settings(
scalaVersion := "2.11.8"
//any other settings, I want to override, separated by comma
propertyA := "A",
propertyB := "C"
)
不同之处在于,我通常在Play应用程序中有依赖项,但所有内容都列在一个build.sbt
下