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

Какой подход к улучшению инкрементного строительства проектов maven вы предпочитаете?

Я собираюсь оптимизировать время для разработки наших проектов. Одним из наиболее трудоемких событий является компиляция проектов.

Из-за известной проблемы упомянутого здесь maven: Дополнительное здание Maven мы должны использовать mvn clean перед каждым процессом сборки.

Я исследовал этот вопрос и выяснил два подхода:

Я тестировал инкрементный плагин Maven Mojo, и это выглядит довольно хорошо. Как я вижу, Maven 2 Reactor Plugin реализует почти ту же функциональность, но специальная команда должна быть указана для достижения результатов (mvn-реактор: make например).

Итак, я сделал вывод, что Maven 2 Reactor Plugin более удобен только для разработчиков, если они собираются оптимизировать время зданий на их локальных компьютеров. Но у меня есть некоторое колебание, потому что Maven 2 Reactor Plugin размещен и (как я думаю) поддерживается как официальный плагин maven, но Добавочный плагин Maven Mojo размещен на java.net.

И мои вопросы:

  • Могут ли мои выводы, что эти два плагина разрешают почти ту же проблему?
  • Есть ли у кого-нибудь опыт использования обоих этих плагинов и возможность дать им какую-либо информацию?
  • Есть ли у вас другие идеи оптимизации здания?
4b9b3361

Ответ 1

Оба плагина, упомянутые выше, не ускорят ваше время компиляции для вашей usecase. если вы хотите ускорить время компиляции, я бы предложил вам обновить maven 3 с поддержкой параллельной сборки.

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

полезные функции maven 3 для ускорения сборки:

mvn clean compile -T 3 (using three threads for paralell builds)

mvn -amd -pl groupid:arifactId (builds the specified projects and all dependent artifacs)

Ответ 2

Плагин для реакторов больше подходит для того, чтобы вы хотите построить только часть ваших модулей внутри сборки, инкрементный плагин больше нацелен на создание только тех модулей, которые изменились с момента последнего компиляции.

Пока я вижу, что вы используете один и тот же эффект, вы, вероятно, больше интересуетесь инкрементным плагином сборки из того, что вы сказали. Можете ли вы использовать эти два вместе, чтобы убедиться, что вы только создаете модули/зависимости, которые вам нужны, если у них есть несвязанные изменения, которые я не знаю.

PS - Я думаю, что чистая ошибка была исправлена ​​в последнем выпуске плагинов инкрементной сборки.

Ответ 3

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

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 мин.

Ответ 4

Вы пытались использовать Дженкинса (или Хадсона)? Это довольно хорошо и управляет многими маленькими зависимыми проектами. Он также очень легко настраивается на сервере. Я бы порекомендовал хотя бы попробовать. Чтобы настроить сервер и настроить 20 проектов maven, требуется всего несколько минут.

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