4

使用 Maven + Surefire 组合,我不能同时执行两个以上的线程。我已经尝试了许多 threadCount、perCoreThreadCount 和 useUnlimitedThreads 设置的组合,但永远不会比两个线程做得更好。见附上的截图:将有大约 12 个 Firefox 窗口,但一次只有两个“驱动”。

在此处输入图像描述

我的机器有 4 个 2.6 Ghz i7 内核,所以我还没有达到硬件限制。

以下是其中一种 Surefire 配置的示例:

        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-surefire-plugin</artifactId>
            <version>2.7.2</version>
            <configuration>
                <includes>
                    <include>**/*Test*.*</include>
                </includes>
                <threadCount>10</threadCount>
                <perCoreThreadCount>true</perCoreThreadCount>
                <parallel>classes</parallel>
            </configuration>
        </plugin>

对于我的测试,我使用的是包装在 JUnit 运行器中的 Scala。每个测试都在自己的类中。我认为我的 JUnit 是 4.10,Maven 3.04。

4

2 回答 2

0

尝试将 MAVEN_OPTS=-Dmaven.artifact.threads=10 定义到 Maven 环境变量中。

或者在执行 mvn 时使用参数“-T”。

例子:

mvn -T 4 clean install # 使用 4 个线程构建

mvn -T 1C clean install # 每个 cpu 核心 1 个线程

mvn -T 1.5C clean install #1.5 thread per cpu core

请注意,您可以指定线程数甚至内核数,因为您使用的是 Maven 3.x。

有关更多详细信息,请查看此链接:https ://cwiki.apache.org/confluence/display/MAVEN/Parallel+builds+in+Maven+3

希望能帮助到你!

于 2014-03-17T19:54:26.920 回答
0

FWIW我有一个类似的问题。原来我试图从不同的 JUnit 类别运行测试类,但设置为与classes并行。

每个类别中的类确实是并行执行的,但类别是串行执行的。

我最终将故障安全配置更新为

<configuration>
    <parallel>suitesAndClasses</parallel>                        
    <useUnlimitedThreads>true</useUnlimitedThreads>
   <threadCountClasses>4</threadCountClasses>
</configuration>
于 2016-05-18T06:43:01.793 回答