Scala 如何关闭多项目构建测试的并行执行?

Scala 如何关闭多项目构建测试的并行执行?,scala,sbt,Scala,Sbt,我有一个多项目构建,在子项目和父项目中进行测试。生成被聚合,以便父项目运行子项目中的所有测试 我对它进行了配置,以便在子项目和父项目中都不会并行执行测试 parallelExecution in Test := false 然而,我有一种烦人的感觉,跨越多个项目的测试是并行运行的。在其中一个子项目的情况下,这是一个问题,因为它会同时改变测试数据库中的状态,导致测试失败 关于如何在项目之间全局切换并行执行测试,有什么想法吗?我认为您可以使用scopeThisBuild在项目之间应用设置,如 pa

我有一个多项目构建,在子项目和父项目中进行测试。生成被聚合,以便父项目运行子项目中的所有测试

我对它进行了配置,以便在子项目和父项目中都不会并行执行测试

parallelExecution in Test := false
然而,我有一种烦人的感觉,跨越多个项目的测试是并行运行的。在其中一个子项目的情况下,这是一个问题,因为它会同时改变测试数据库中的状态,导致测试失败


关于如何在项目之间全局切换并行执行测试,有什么想法吗?

我认为您可以使用scope
ThisBuild
在项目之间应用设置,如

parallelExecution in ThisBuild := false
我不知道您是否可以将其与scope
测试结合起来,但这可能不是必需的。

请参见我的答案

还有另一种方法可以防止并行执行。您可以使不同项目的测试任务相互依赖:

test in Project2 := (test in Project2).dependsOn(test in Project1).value
parallelExecution in Test in Project2 := false

要限制所有项目中并发执行的测试的数量,请使用:

concurrentRestrictions in Global += Tags.limit(Tags.Test, 1)


请参见

基于的另一种可能性是在根项目中定义命令别名:

.settings(addCommandAlias("test", ";s1/test;s2/test;s3/test"): _*)

其中s1、s2和s3为子项目。当您在根项目中运行“测试”时,测试将按定义的顺序依次执行。

这在1.1.0中对我很有用:

测试/并行执行:=false

对不起,我是Scala的新手,面临着同样的问题——我应该把这句话放在哪里?到项目的哪个文件?最简单的方法是将其放入
build.sbt
(即使您在
project/build.scala
中有完整配置,也会使用该文件)谢谢!我自己也想到了这一点,太匆忙了,没有去问,也没有去想:)。不管怎样,特别是在build.sbt中,谢谢你。这对我不起作用:我得到了对未定义设置的
引用:Project2/*:test from Project2/*:test(/Users/the21th/work/Project2/build.sbt:36)你是说Project2/web资产测试:test吗?