确定Maven构建期间的CPU核心数

时间:2015-08-11 13:22:41

标签: maven maven-failsafe-plugin

我目前正在使用Maven Failsafe插件执行测试的分叉执行(在单独的JVM中并行运行多个)。

我根据我的机器拥有的核心数量手动设置 forkCount 变量,但我希望Maven自动确定这个变量,这样我就可以结束类似的事情:

<forkCount>${system.numCores}</forkCount>

这可能吗?

2 个答案:

答案 0 :(得分:1)

您可以在命令行之前解决此问题 Linux:nproc
Windows:wmic cpu get NumberOfCores, NumberOfLogicalProcessors/Format:List或使用环境变量NUMBER_OF_PROCESSORS(与${env.NUMBER_OF_PROCESSORS}一起使用)

注意 - 对于Windows,您需要调整输出并获取数字。

然后,将数字作为参数传递给maven:-Dsystem.numCores=$NUM-Dsystem.numCores=%NUM%

编辑:您还可以使用属性(maven exec插件)生成文件,然后使用maven属性插件读取它。所有这些都是在同一个版本中,在不同的阶段完成的

我希望这会有所帮助。

答案 1 :(得分:1)

您可以尝试使用build-helper:cpu-count插件

http://www.mojohaus.org/build-helper-maven-plugin/cpu-count-mojo.html

<plugin>
    <groupId>org.codehaus.mojo</groupId>
    <artifactId>build-helper-maven-plugin</artifactId>
    <version>3.0.0</version>
    <executions>
      <execution>
        <id>get-cpu-count</id>
        <goals>
          <goal>cpu-count</goal>
        </goals>
        <configuration>
          <cpuCount>system.numCores</cpuCount>
        </configuration>
      </execution>
    </executions>
  </plugin>

这会将可用核心数放入变量system.numCores

您还可以在配置中指定投影因子,例如<factor>0.75</factor>如果您想使用一小部分可用内核。这将根据给定因子调整核心数,并保证返回至少为1的整数值,即使用因子不会将计算核心的数量减少到1以下。