如何为多项目生成中的每个sbt项目设置本地项目设置?

如何为多项目生成中的每个sbt项目设置本地项目设置?,sbt,scalatest,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")) } 问题是它在根文件夹中为JUnitx XML定义输出文件夹,而不是为

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

object MyBuild extends Build {
  ...
  override lazy val settings = super.settings ++ (testOptions in Test += Tests.Argument(TestFrameworks.ScalaTest, "-u", "target/test-report"))
}
问题是它在根文件夹中为JUnitx XML定义输出文件夹,而不是为每个子项目定义输出文件夹


如何添加将导致输出位置相对于每个子项目的常规设置?

解决方案之一是定义自己的方法来创建项目(在此方法中,您可以创建默认设置):

def DefaultProject(名称:字符串,路径:字符串)=项目(名称,文件(路径))。 设置(测试+中的测试选项= 参数(TestFrameworks.ScalaTest,“-u”,path+“/target/test report”) ) 然后,您可以定义如下项目:

lazy val genscalaxb=DefaultProject(“genscalaxb”、“genscalaxb”)。
设置(ScalaxB设置:*)
lazy val converter=DefaultProject(“转换器”、“转换器”)。
设置(仪器设置:*).dependsOn(`genscalaxb`)

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

scalaVersion in ThisBuild := "2.11.2"

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

这看起来很有希望,但我希望添加一个适用于所有项目的片段。更简单,以防项目被遗忘。这就是为什么我尽可能多地使用.sbt文件的原因-我宁愿不必确保当有人在8个月后回来并添加一个新的子项目时,他们必须通读并反向工程有关构建的所有内容以使其正确。从0.13.x开始,实际上在.sbt文件中几乎没有什么做不到的。我没有任何.sbt文件(除了plugins.sbt)。