Когда вы создаете с помощью maven на многоядерном/многопроцессорном компьютере, часто можно параллельно создавать разные подпроекты. Есть ли способ сделать это с помощью maven? Есть ли плагин для этого/независимо?
Maven: как делать параллельные сборки?
Ответ 1
Maven 3 (начиная с бета-версии 1) теперь поддерживает параллельные сборки в качестве экспериментальной функции.
Например,
mvn -T 4 clean install # Builds with 4 threads
mvn -T 1C clean install # 1 thread per cpu core
mvn -T 1.5C clean install # 1.5 thread per cpu core
Полная документация может быть найдена на вики Maven.
https://cwiki.apache.org/confluence/display/MAVEN/Parallel+builds+in+Maven+3
Ответ 2
Некоторые из приложений CI build (например, hudson) могут одновременно создавать несколько проектов maven (и даже на нескольких компьютерах).
Поддержка этого в maven 'standalone' также была бы приятной, быстрый просмотр трекера maven дал мне: http://jira.codehaus.org/browse/MNG-3004
Ответ 3
Если вы столкнулись с этим вопросом и хотите разобраться в своем сервере сборки, и вы не используете тот, который имеет дело с maven изначально, волшебный флаг, который вы ищете, это:
-Dmaven.repo.local=someNoneGlobalDir
сделайте это для каждой из ваших сборников, и вы можете позволить им запускать все одновременно, а не иметь все, что использует maven в очереди!
Ответ 4
Предлагаемое решение велико, но я хотел бы добавить что-то к ответам здесь относительно стабильности теста во время параллельных сборок.
Итак, когда Maven parallel build используется:
mvn -T 4 clean install # Builds with 4 threads
mvn -T 1C clean install # 1 thread per cpu core
mvn -T 1.5C clean install # 1.5 thread per cpu core
Некоторые проблемы с тестами могут отображаться. Обратите внимание на любое поведение в тестах, которое отличается между последовательным и параллельным выполнением теста. В большинстве случаев это происходит при неэффективной тестовой изоляции по ресурсам.
Например, test1 управляет записью db с ключом 12345, который является жестко запрограммированным, а test2 использует одну и ту же запись! Это не может быть хорошо...
Это ситуация, которая должна быть рассмотрена в первую очередь, но когда-то она забывается и может привести к разным проблемам после того, как будет выполнен переход на параллельную сборку maven.
Если это произойдет, и вы по-прежнему хотите использовать параллельное выполнение, по крайней мере, в некоторых случаях, вы можете (конечно, помимо попытки исправить тест и сделать его должным образом изолированным) до отключить тестовые тесты Maven с использованием аргумента -DskipTests:
mvn clean install -T 4 -DskipTests