06 октября 2010

Maven tips. Опции для многомодульных проектов

Тем из нас кто в качестве билд тулзы использует maven посвящается.
Ежедневно нам приходится десятки раз пересобирать проект. Это занимает от нескольких секунд до минут рабочего времени, которые можно было бы провести более полезно нежели тупо наблюдая за выполнением процедуры билда. В данной заметке рассмотрим пару уловок, позволяющих оптимизировать время на сборку проекта.

1. rf опция.
Большинство больших проектов разбиваются на несколько модулей, при этом запустив сборку родительского проекта запускается сборка всех дочерних. При падении сборки на одном из последних дочерних проектов, исправление ошибки и повторный перезапуск сборки приведёт к сборке всех всех модулей. Специально для таких случаев придумана опция resume(mvn -rf [родительский проект]), которая запустит билд с последнего поломанного проекта, не пересобирая уже собранные.
2. pl опция.
Ещё одна опция упрощающая жизнь, позволяет собирать только указанные проекты. В тех случаях когда нет необходимости собирать весь проект, а нужны только некоторые его модули можно воспользоваться опцией pl:
mvn -pl [модуль1],[модуль2] clean install


UPD.
Эмпирическим путём было установлено что опция pl является транзитивной. Тоесть если ваша структура проекта выглядит следующим образом:
корень
-модуль1
-модуль2
--сын_модуля2
-модуль3
--дочь_модуля3
И если вам необходимо сбилдить модуль1 и дочь_модуля3, то это возможно сделать с помощью следующей команды:
mvn -pl <модуль1>,<модуль3\дочь_модуля3> clean install


по мотивам 5 Maven Tips by Shekhar Gulati

2 комментария:

intr комментирует...

Любопытно, а вот интересно, включение сборки отдельных дочерних модулей работает для детей детей? Надо сегодня проверить.

Я кстати свой велосипед написал с эксклюдом проектов которые не требуется собирать (на базе профилей).

Rumoku комментирует...

intr, обновил заметку с учётом вашего коментария.