Учитывая: мультимодульный проект Maven
Задача: обновить версию после каждой версии
Я вижу две разные стратегии:
стратегия 1 - во время обновления: обновлять версии всех модулей, несмотря на то, что были обновления или нет
стратегия 2 - минималистичное обновление: обновить только версию тех модулей, которые были фактически затронуты
Предположим, что мы имеем следующую структуру проекта:
root
---dao
---domain
---web
---site1
---site2
---processors
---processor1
---processor1Service
---processor1Util
---processor1Tests
---processor2
---processor2Service
---processor2Util
---processor2Tests
---simulators
---simulator1
---simulator1Service
---simulator1Util
---simulator1Tests
---simulator2
---simulator2Service
---simulator2Util
---simulator2Tests
---etc
весь родительский pom имеет тип упаковки - pom. Все конечные модули имеют тип создания ресурсов - jar, war, sar и т.д. Root pom содержит секцию dependencyManagement, в которой перечислены все дочерние модули.
стратегия 1:
стратегия 2:
RM объединяет обновления из ветки (функций)
все непрерывные продукты интеграции происходят (пусть все будет в порядке)
стратегия 1:
выгоды:
недостатки:
стратегия 2:
выгоды:
недостатки:
Пожалуйста, поделитесь своим мнением. Как эта проблема обрабатывается в больших проектах, таких как, например, springframework
Лично я пойду абсолютно для вашей стратегии 1. Что стратегия используется в компании, в которой я работаю. Ваш побочный эффект, который вы упоминаете как пространство на жестком диске или обновление версий модуля, которые не требуется обновлять, - это незначительные проблемы, сравнимые с "версиями zoo".
Только я проголосую за вашу стратегию номер 2 в случае, если вы используете архитектуру OSGI, и для этого требуется очень точная стратегия версии для версии, и если вы обновите всю версию сразу, это разрушит большую выгоду OSGI (hot-deploy only модули/подмодули, которые требуют обновления).
Я также предлагаю вам взглянуть на http://java.dzone.com/articles/why-i-never-use-maven-release, который дает хорошие советы по обновлению версии в проекте с несколькими модулями maven, а также как отслеживается в любом CVS