Сведения о вопросе

Solllo

04:17, 6th August, 2020

Теги

java   svn   maven-2    

Макет репозитория для больших проектов Maven

Просмотров: 341   Ответов: 2

У меня есть большое приложение (~50 модулей), использующее структуру, подобную следующей:

  • Приложение
    • Коммуникационный модуль
      • Модуль цветной связи
      • SSN модуль связи
      • и т.д. коммуникационный модуль
    • Модуль маршрутизатора
    • Сервисный модуль
      • Модуль обслуживания голосования
        • Подмодуль веб-интерфейса для голосования
        • Подмодуль сборщика голосов для голосования
        • и т.д. для голосования
      • Служебный модуль тест
      • и т.д. модуль

Я хотел бы импортировать приложение в Maven и Subversion. После некоторых исследований я обнаружил, что для этого существуют два практических подхода.

Один из них использует древовидную структуру, как и предыдущий. Недостатком этой структуры является то, что вам нужна тонна настроек/хаков, чтобы заставить многомодульную отчетность хорошо работать с Maven. Еще одним недостатком является то, что в Subversion стандартный подход trunk/tags/branches добавляет еще больше сложности в репозиторий.

Другой подход использует плоскую структуру, где есть только один родительский проект и все модули, подмодули и parts-of-the-submodules являются прямыми дочерними элементами родительского проекта. Этот подход хорошо работает для отчетности и проще в Subversion, однако я чувствую, что теряю немного структуры таким образом.

Какой путь вы бы выбрали в долгосрочной перспективе и почему?



  Сведения об ответе

appple

16:53, 18th August, 2020

У нас есть большое приложение (160+ OSGi связок, где каждый bundle-это модуль Maven), и урок, который мы усвоили и продолжаем изучать, заключается в том, что плоское лучше. Проблема с кодированием семантики в вашей иерархии заключается в том, что вы теряете гибкость. Модуль, который является 100% скажем "communication" сегодня, может быть частично "service" завтра, и тогда вам нужно будет перемещать вещи в вашем репозитории, и это сломает все виды скриптов, документации, ссылок и т. д.

Поэтому я бы рекомендовал плоскую конструкцию, а для кодирования семантики в другом месте (скажем, например IDE рабочей области или документации).

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


  Сведения об ответе

lourence

15:38, 2nd August, 2020

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

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

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


Ответить на вопрос

Чтобы ответить на вопрос вам нужно войти в систему или зарегистрироваться