2

我有一个这样的项目结构:

Parent Project
 - A
 - B
 - C
 - D (Parent to D.1-3)
   - D.1
   - D.2 
   - D.3
 -E

ABCE 是还包含单元测试的代码项目(OSGi 包),D.1、D.2、D.3 是使用 pax-exam 的集成测试,它们开始使用 jUnit 运行器。

ABCE 单元测试可以并行运行。D.1-3 不能并行运行。这很简单,我只是在我的父 pom 中告诉 surefire 并行运行所有内容,在 D 的 pom 中我告诉surefire 一次运行所有内容。D.1-3 有 D 作为父 pom。

好的,所以现在我有并行测试执行。我也非常想要并行构建。

如果我在 maven 中使用 -T 5 标志,这意味着并行运行多个模块。当涉及到surefire 时,这意味着我将有5 个surefire 实例,每个实例并行运行自己的测试。这也很好。

问题是 maven 可能会决定并行运行 D.1、D.2、D.3,然后无论我说什么,这些测试用例都会并行运行。

有什么方法可以覆盖 D.pom 中 maven 的 -T 标志吗?

或者任何其他方式强制部分构建进行序列化?除了将 D.1-3 移出该项目并移入另一个始终使用 -T 1 运行的项目之外。

4

2 回答 2

0

看看: maven调用者插件

它允许通过 .properties 文件中的配置在自身内部启动 maven。因此,可以使用所需的 -T 设置单独构建项目 Dx。

于 2013-09-06T13:09:13.940 回答
0

一种可能更简单的方法是覆盖模块 pom 中的 surefire.forkCount。这样,您就可以从并行构建和并行测试执行中受益,而只有特别有问题的模块被串行运行。

于 2015-07-31T16:29:54.583 回答