我目前正在使用Maven Failsafe插件执行测试的分叉执行(在单独的JVM中并行运行多个)。
我根据我的机器拥有的核心数量手动设置 forkCount 变量,但我希望Maven自动确定这个变量,这样我就可以结束类似的事情:
<forkCount>${system.numCores}</forkCount>
这可能吗?
答案 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以下。