Определение количества ядер процессора во время сборки Maven

В настоящее время я использую плагин Maven Failsafe, чтобы выполнять раздвоенное выполнение тестов (параллельное выполнение нескольких в отдельных JVM).

Я вручную устанавливаю переменную forkCount, основываясь на количестве ядер, которые есть на моей машине, но я бы хотел, чтобы Maven автоматически определил это, что позволило бы мне получить что-то вроде:

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

Это возможно?

2 ответа

Вы можете попробовать использовать 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.

Вы можете решить номер раньше в командной строке.
Linux: nproc
Окна: wmic cpu get NumberOfCores, NumberOfLogicalProcessors/Format:List или используйте переменную окружения NUMBER_OF_PROCESSORS (использовать с ${env.NUMBER_OF_PROCESSORS})

Примечание - для окон вам нужно настроить вывод и получить номер.

Затем передайте число в качестве параметра maven: -Dsystem.numCores=$NUM или же -Dsystem.numCores=%NUM%

РЕДАКТИРОВАТЬ: Вы также можете создать файл со свойством (плагин maven exec), а затем прочитать его с плагином свойств maven. Все сделано во время одной сборки, на разных этапах

Надеюсь, это поможет.

Другие вопросы по тегам