我有两个测试配置,我想将它们包含在我的所有子项目中。我希望会有一个简单的方法来做到这一点。目前,我将它们添加到每个单独的项目中,通过调用:
.configs(config1, config2)
为了确保每个项目中都包含一些设置,您可以这样做:
scalaVersion in ThisBuild := "2.10.0"
还有一个ThisProject
对象。我想知道我是否能够使用这些对象中的任何一个来为所有项目添加配置。
我有两个测试配置,我想将它们包含在我的所有子项目中。我希望会有一个简单的方法来做到这一点。目前,我将它们添加到每个单独的项目中,通过调用:
.configs(config1, config2)
为了确保每个项目中都包含一些设置,您可以这样做:
scalaVersion in ThisBuild := "2.10.0"
还有一个ThisProject
对象。我想知道我是否能够使用这些对象中的任何一个来为所有项目添加配置。
您可以定义一个Project => Project
并传入项目。使用 sbt 0.13,您还可以在 build.sbt 中定义一个多项目构建。
在project/common.scala
:
import sbt._
import Keys._
object Common {
val Config1 = config("config1") extend(Test)
val Config2 = config("config2") extend(Test)
def addConfigs(proj: Project): Project = proj.configs(Config1, Config2)
}
在build.sbt
:
import Common._
lazy val app = addConfigs(project.in(file("app")))
如果您使用具有聚合的父项目,配置不会应用于子项目吗?
object MyBuild extends Build {
lazy val root = Project(id="myproject", base=file("."))
.aggregate(sub1, sub2)
.configs( config1, config2 )
lazy val sub1 = Project(id = "sub1", base = file("sub1"))
lazy val sub2 = Project(id = "sub2", base = file("sub1"))
}
除了“ThisBuild”范围之外,还有一个“全局”范围可能起作用:在此处输入链接描述,但您可以使用项目级插件来应用配置 -具有插件和SBT 插件页面的全局配置(请参阅示例插件部分)。