Подтвердить что ты не робот

Способы сделать maven быстрее?

У меня есть многомодовый Java-проект. Для его создания Maven занимает около 40 секунд. Я также попробовал maven с многопоточными сборками, указав аргументы -T и -C для нитей и ядер, которые будут использоваться. Но я не видел существенного улучшения времени на стене моих сборников.
Я использую maven 3.2.3, и иногда мне нужно очень часто создавать свой проект.
Я знаю, что чистая цель занимает много времени, но я не могу ее опустить.
Предложения, пожалуйста....

EDIT:
Примечание. В моем случае очистка не занимает много времени. Он заканчивается через 1 сек. установка занимает остальное время.

4b9b3361

Ответ 1

Примечание. Во-первых, это AFAIK. Никаких других встроенных опций в maven нет, кроме ответов здесь.


Запуск maven build с несколькими потоками помогает мне ускорить сборку. Например:

mvn clean install -T100

где -T - для указания количества потоков, которые вы хотите на основе вашего оборудования.

Ниже приведены варианты из вики

Maven 3.x имеет возможность выполнять параллельные сборки. Команда выглядит следующим образом:

  • mvn -T 4 clean install Сборка с 4-мя потоками
  • mvn -T 1C чистая установка 1 поток на ядро процессора
  • mvn -T 1.5C чистая установка 1.5 потока на ядро процессора

Как оценивается выполнение (см. Параллельные сборки в Maven 3)?

enter image description here

Каждый узел на графике представляет модуль в многомодульной сборке, "уровни" просто указывают расстояние до первого модуля на графике зависимостей внутреннего реактора. Maven вычисляет этот график на основе объявленных межмодульных зависимостей для многомодульной сборки. Обратите внимание, что родительский проект maven также является зависимостью, которая объясняет, почему существует один узел поверх большинства графиков проекта. Зависимости вне реактора не влияют на этот график.

Наконец, если вы хотите пропустить выполнение теста, вы также можете использовать -DskipTests.

Внимание: некоторые из ваших плагинов могут быть несовместимы с многопоточным компоновщиком, это может работать. но это даст ниже предупреждение. вам может понадобиться посмотреть документацию по плагину для поддержки многопоточности.

[WARNING] *****************************************************************                                                                                                                                 
[WARNING] * Your build is requesting parallel execution, but project      *                                                                                                                                 
[WARNING] * contains the following plugin(s) that have goals not marked   *                                                                                                                                 
[WARNING] * as @threadSafe to support parallel building.                  *                                                                                                                                 
[WARNING] * While this /may/ work fine, please look for plugin updates    *                                                                                                                                 
[WARNING] * and/or request plugins be made thread-safe.                   *                                                                                                                                 
[WARNING] * If reporting an issue, report it against the plugin in        *                                                                                                                                 
[WARNING] * question, not against maven-core                              *                                                                                                                                 
[WARNING] *****************************************************************                                                                                                                                 
[WARNING] The following plugins are not marked @threadSafe in test-project:                                                                                                                          
[WARNING] de.dentrassi.maven:rpm:0.9.2                                                                                                                                                                      
[WARNING] Enable debug to see more precisely which goals are not marked @threadSafe.                                                                                                                        
[WARNING] *****************************************************************    

Ответ 2

Вы можете оптимизировать сборку с помощью небольшого трюка, например

  • Если вы написали Junit Test и не хотите запускать тестовый пример каждый раз, когда можете использовать -DskipTests=true
  • Локальная установка Nexus или репозиториев
  • Вы можете настроить конфигурации памяти на оптимальные, например: добавьте эту строку в mvn.bat установить MAVEN_OPTS=-Xmx512m -XX:MaxPermSize=256m

Для получения дополнительной информации вы можете проверить Как ускорить сборку Maven

Ответ 3

Если с помощью командной строки вы можете проверить, сколько ядер у вашей машины, и использовать все из них, если вы также хотите пропустить свои тесты, вы можете добавить -DskipTests Например, у меня 8-ядерный процессор:

mvn -T 8C clean install -DskipTests

Ответ 4

Вы можете сделать хакерский способ, если у вас есть дополнительная оперативная память, как я. И вам не нужен SSD. Потому что он чувствителен к SSD, чтобы делать много операций чтения-записи. Даже если вы отключите + бит (MacOS - я не помню, имела ли Win аналогичная проблема). Но

1) создайте RAM-диск (количество способов зависит от вашей ОС) и подключите его к /Users/Username/volatile folder

2) найдите maven-module-builder-X.X.X.jar в MVN_HOME/lib

3) в JAR изменить файл org/apache/maven/model/pom-4.0.0.xml, изменив

< > & построить Лт; каталог > /Users/имя пользователя/энергозависимые/${project.groupId}/${project.artifactId}/${project.version}/мишень

4) С этого момента все компиляции проекта будут выполнены в памяти. И это различие даже по сравнению с SSD.

Да, его взломать и некоторые плагины maven могут перестать работать BTW.

Ответ 5

На моем актуальном проекте:

1/mvn clean install [INFO] Общее время: 01:05 ч

2/mvn clean install -DskipTests [INFO] Общее время: 18:35 мин.

3/mvn clean install -Dmaven.test.skip -DskipTests [INFO] Общее время: 10:58 мин.

4/mvn -T 1C clean install -Dmaven.test.skip -DskipTests
[INFO] Общее время: 04:00 мин.

Ответ 6

Помимо параллельного запуска, о котором многие уже упоминали, попробуйте следующие варианты maven, которые ускорят сборку -XX: + TieredCompilation -XX: TieredStopAtLevel = 1