Подтвердить что ты не робот

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

4b9b3361

Ответ 1

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

+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>
    <artifactId><!-- parent artifactId --></artifactId>
    <groupId><!-- parent groupdId --></groupId>
    <version><!-- parent version --></version>
    <relativePath>../parent-project</relativePath>
</parent>

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

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

Ответ 2

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

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