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

Дополнительное здание Maven

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

У кого-нибудь есть опыт в том, как оптимизировать сборку непрерывной интеграции для больших проектов. Является ли инкрементная функциональность сборки Maven или Hudson хорошей? Я бы предпочел не ждать всего 2 часа, сделав только небольшое изменение в одном модуле.

С другой стороны, конечно, вам всегда приходилось перестраивать и повторно тестировать по крайней мере все прямые и косвенные зависимости измененного модуля. Это также то, что мы сейчас делаем с Hudson, автоматически запуская все зависимые задания.

Разделяется ли разделение на несколько заданий сборки для одного и того же проекта? Мне вообще не нравится иметь артефакты на сервере, где все другие сгенерированные вещи, такие как отчеты, документы и т.д., Могут быть устаревшими.

Спасибо за любые мысли.

4b9b3361

Ответ 1

Я бы предложил не разделиться на разные задания. Это, по моему опыту, может быстро выйти из-под контроля с зависимостями вверх и вниз. Инкрементальные здания отлично подходят для того, что вам нужно. Если зависимости устанавливаются непосредственно, только артефакты, которые изменяются, и их зависимости перестраиваются.

Я бы разделил задания на сборку, хотя, если они полностью являются отдельными приложениями, в которых нет или очень мало зависимых (если они истинны, то они не должны находиться в одном реакторе и, следовательно, инкрементные сборки не будут возможны)

Ответ 2

Я только что провел несколько тестов, и, как я узнал, Maven действительно не поддерживает инкрементные сборки. Без каких-либо плагинов у Maven действительно опасное поведение. Если вы измените код в каком-то модуле и скомпилируете его без предварительной очистки, зависимые модули не будут восстановлены, что означает, что они ссылаются на устаревшую версию зависимостей и не будут реагировать на обновленный код.

С инкрементным плагином сборки можно построить без очистки. Каждый измененный модуль будет восстановлен и все иждивенцы будут очищены и перестроены. Однако в моем случае компиляция использует только 10% времени сборки, 90% - для тестирования. И когда я устанавливаю/развертываю все тесты, они снова выполняются, поэтому время от инкрементного плагина очень мало.

Таким образом, я все еще вижу только возможность разбить сборки в Хадсоне, что вряд ли идеально по моему мнению.