Проект с несколькими модулями maven с родительским pom и svn layout

В настоящее время у меня около 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. Мне также нравится иметь все общие зависимости, информацию о репозитории и информацию о плагинах в одном месте.

2 ответа

Вы можете использовать следующий макет:

+parent-project
 pom.xml
+child-project-1
 pom.xml
+child-project-2
 pom.xml

В родительском проекте pom add:

<modules>
 <module>../child-project-1</module>
 <module>../child-project-2</module>
</modules>

В проектах для детей pom add:

<parent>
 
 
 
 <relativepath>../parent-project</relativepath>
</parent>

Проекты для детей могут быть зависимыми.

Следующие ссылки также могут помочь:


Вариантом подхода JohnS будет использование svn:externals для привязки соответствующих соединительных линий/тегов/ветвей ваших подпроектов к соответствующей ветке/тегу/ветки вашего родительского проекта. Таким образом, проверка одного варианта вашего родителя вытащила бы всю правильную версию других проектов.

Это имеет смысл, только если разумно проверять все ваши проекты вместе.

licensed under cc by-sa 3.0 with attribution.