Какой подход к улучшению постройки Maven проектов вы предпочитаете? - PullRequest
12 голосов
/ 16 февраля 2012

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

Из-за известной проблемы Maven, упомянутой, в частности, здесь: Построение Maven мы должны использовать mvnочищайте перед каждым процессом сборки.

Я исследовал этот вопрос и обнаружил два подхода:

  1. Плагин Incremental-build-plugin Maven Mojo
  2. Плагин Maven 2 Reactor

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

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

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

  1. Мои выводы, что эти два плагина решают почти одну и ту же проблему, верно?
  2. У кого-нибудь есть опыт использования обоихэти плагины и могут дать какие-либо отзывы о них?
  3. У вас есть другие идеи по оптимизации здания?

Ответы [ 3 ]

4 голосов
/ 20 апреля 2012

Оба упомянутых выше плагина не ускорят время компиляции для вашего варианта использования. если вы хотите ускорить время компиляции, я бы предложил вам обновить до 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)
0 голосов
/ 04 апреля 2012

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

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

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

0 голосов
/ 23 марта 2012

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

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

...