我有一个像这样的项目结构:
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中的确定并行运行所有内容,并且在D's pom中我告诉我们确保一次运行一切。 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运行的项目。
答案 0 :(得分:0)
它允许通过.properties文件中的配置在其自身内启动maven。 因此,可以使用期望的-T设置单独构建项目D.x.
答案 1 :(得分:0)
一种可能更简单的方法是覆盖模块pom中的surefire.forkCount。这样,您就可以获得并行构建和并行测试执行,只有特别有问题的模块可以串行运行。