2008-10-03 2 views
1

Я никогда не понимал, как и почему я буду использовать модули Maven (реакторные сборки).Как использовать модули Maven без svn: externals?

У нас есть десятки библиотек, которые мы разделяем (как зависимости) среди наших продуктов, а также между библиотеками. Если бы мы переключились на создание модулей Maven, как бы мы это настроили, как в SVN, так и в наших рабочих копиях?

Могут ли модули Maven действительно быть подпапками? Нужно ли им также быть подпапками в репо SVN?

Предполагая, что вам просто нужны подпапки в рабочей копии, я полагаю, что svn:externals будет работать, чтобы, скажем, библиотека «util» была одновременно модулем нескольких проектов. Но я много читал о том, как использовать svn:externals, потому что вам нечего мешать изменять код во внешнем, но его не отслеживать.

Любые предложения? Я пропускаю лодку на модулях?

ответ

1

Я думаю, что это проблема с подрывной деятельностью. Это заставляет вас создавать структуру папок для ветвления. Другие системы управления версиями позволяют разветвляться без видимости в структуре папок, где модули maven могут быть созданы более легко.

Я работаю с продуктом из более чем 250 модулей, и они находятся в «логических» модулях maven, которые означают только область функционирования. например «CoreService», «Утилиты» и «Приложения». Мы очень довольны использованием модулей maven для этого, так как мы можем убедиться, что все CoreServices используют определенную версию определенной зависимости и что все приложения получают определенную библиотеку aspectJ, вплетенную в них.

Для вашего решения, хотя:

Существует функция в подрывной для модуля, чтобы найти его родителей под названием relativePath который является тег в parent тега. Единственная причина поместить подпроекты в папку своего родителя так, чтобы они могли быть помещены в реактор при построении родителя. Детские проекты все еще могут быть построены (и установлены) индивидуально.

Существует также расширенная поддержка для svn:externals в subersion 1.5, которая допускает относительный URL: s, который также должен пригодиться в этом случае.

-Хорошо удачи и сообщите здесь, если найдете решение!

3

Нет ... модульный проект должен использоваться только тогда, когда дочерний проект интегрирован в родительский объект для создания большего артефакта, поэтому примером может быть проект Enterprise, где ваши модули содержат EJB (сервер и клиент) , WAR, а затем они объединены в файл EAR. Эта модульность предназначена только для удобства и может быть пропущена, если это необходимо.

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

Смежные вопросы