如何在多项目构建中为每个sbt项目设置本地项目设置?

时间:2014-08-21 06:52:31

标签: sbt scalatest

要使用scalatest生成junit XML文件,我们有以下设置:

object MyBuild extends Build {
  ...
  override lazy val settings = super.settings ++ (testOptions in Test += Tests.Argument(TestFrameworks.ScalaTest, "-u", "target/test-report"))
}

这个问题是它在根文件夹中定义了JUnix XML的输出文件夹,而不是为每个子项目定义。

如何添加一个通用设置,使输出的位置相对于每个子项目?

2 个答案:

答案 0 :(得分:2)

其中一个解决方案是定义自己的方法来创建项目(在这个方法中你可以创建默认设置):

    def DefaultProject(name: String, path: String) = Project(name, file(path)).
settings(testOptions in Test += 
Tests.Argument(TestFrameworks.ScalaTest, "-u",path+"/target/test-report")
    )

然后您可以定义以下项目:

    lazy val genscalaxb = DefaultProject("genscalaxb", "genscalaxb").
settings(scalaxbSettings: _*)


    lazy val converter = DefaultProject("converter", "converter").
settings(instrumentSettings: _*).dependsOn(`genscalaxb`)

答案 1 :(得分:0)

如果您使用的是.sbt文件而不是完整的Scala构建配置,则可以使用类似

的内容
scalaVersion in ThisBuild := "2.11.2"

在你的根.sbt文件中。这会将范围修饰符添加到设置定义中,并将其添加到当前构建中的所有项目中。