В настоящее время у меня около 16 проектов, которые я создаю с помощью maven, которые развертываются на одном сервере приложений, которые составляют нечто вроде "портала". Я построил родительский pom для обработки общих зависимостей и конфигураций плагинов. В настоящее время моя структура SVN выглядит примерно так:
portal_root
+project1
+tags
+branches
+trunk
+project2
.
.
.
+projectn
pom.xml
Индивидуальные проекты разворачиваются отдельно. То есть проект1 не имеет зависимости от project2, и каждый может быть изменен и развернут без необходимости изменять что-либо еще.
Это представляет проблему с SVN, как если бы другой разработчик захотел проверить весь корень портала, чтобы также получить родительский pom, они также по умолчанию вытащили бы копии всех тегов и ветвей! Не совсем идеально.
Единственное, что я могу придумать, это использовать что-то вроде этого:
portal_root
+tags
+branches
+trunk
+project1
+src
pom.xml
+project2
.
.
.
pom.xml
Однако теперь все изменения проекта будут отслеживаться в папке тегов. Для меня это не большая проблема, но теперь ветвление становится болью.
В настоящее время я также работаю над подключением Teamcity к этому, что было бы немного легче, так как мне нужно было бы смотреть только один каталог (например, теги), чтобы поймать все, что нужно построить. Я также развертываю артефакты в репозитории предприятия Nessus.
Я надеюсь, что кто-то может дать мне несколько предложений здесь, так как мне не удалось найти достойную документацию, в которой говорится о жизненном цикле всей сборки и ее лучших практиках.
Мне нравится идея создания и развертывания всех проектов с помощью одной команды maven. Мне также нравится иметь все общие зависимости, информацию о репозитории и информацию о плагинах в одном месте.