Я проверил вокруг и не мог найти хороший ответ на это:
У нас есть проект Знатока мультимодуля, который мы хотим непрерывно интегрировать. Мы думали о двух стратегиях обработки этого:
Существует ли стандартная, предпочтительная практика для этого? Я проверил Переполнение стека, Google, Непрерывную книгу Интеграции, и ничего не нашел, но возможно я пропустил его.
По крайней мере, стандартная практика с Хадсоном - ваш первый вариант. Во-первых, в maven ваша сборка может работать не очень хорошо, если все проекты не находятся в реакторе вместе. С другой стороны, попытка сделать их отдельными сборками поставит вас в чертовски сложное управление снимками. Если один в середине изменится, и вы попытаетесь построить только его, maven будет искать его зависимости в виде снимков. То, что он получит, будет зависеть от порядка, в котором строятся другие проекты, и от того, публикуете ли вы снимки.
Если у вас так много проектов или таких несвязанных друг с другом проектов, что создание их всех является проблемой, то я предлагаю вам рассмотреть возможность дезагрегации. Сделайте родительский проект отдельным выпущенным проектом, дайте каждому из них (или каждой их подгруппе) структуру магистралей / тегов / ветвей и сделайте их зависимыми от выпусков, а не снимков.
Идеальной практикой было бы запустить сборку реактора для сборки только модулей, содержащих изменения (с опцией - projects
) и на модулях, которые зависят от них (с опцией - also-make-dependents
).
Но TC на данный момент не поддерживает эквивалентную функцию (проверьте TC 5 EA: Триггеры зависимости Maven 2 не работают ... ), поэтому рекомендуется запускать полную сборку реактора (вы не хотите, чтобы отдельный модуль ломал модули, зависящие от него, без предупреждения, вы хотите, чтобы согласованные наборы SNAPSHOTS были синхронизированы).