Какой подход к улучшению инкрементного строительства проектов 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.
И мои вопросы:
- Могут ли мои выводы, что эти два плагина разрешают почти ту же проблему?
- Есть ли у кого-нибудь опыт использования обоих этих плагинов и возможность дать им какую-либо информацию?
- Есть ли у вас другие идеи оптимизации здания?
Ответы
Ответ 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 минут, и он будет последовательно создавать любые восходящие проекты автоматически.