мультимодульный проект maven с родительским pom и svn макетом - PullRequest
12 голосов
/ 14 декабря 2010

В настоящее время у меня есть около 16 проектов, которые я создаю с помощью maven, которые развернуты на том же сервере приложений, которые составляют что-то вроде «портала».Я построил родительский pom для обработки общих зависимостей и конфигураций плагинов.В настоящее время моя структура SVN выглядит примерно так:

portal_root
    +project1
        +tags
        +branches
        +trunk
    +project2
        .
        .
        .
    +projectn
    pom.xml

Каждый отдельный проект развертывается отдельно.То есть project1 не имеет зависимости от project2, и каждый может быть изменен и развернут без необходимости что-либо изменять.

Это создает проблему с SVN, как если бы другой разработчик хотел проверить весь портал »"root (чтобы также получить родительский pom), они также по умолчанию будут удалять копии всех тегов и ветвей!Не совсем идеально.

Единственное, о чем я могу подумать, это использовать что-то вроде этого:

 portal_root
     +tags
     +branches
     +trunk
         +project1
              +src
              pom.xml
         +project2
             .
             .
             .
         pom.xml

Однако теперь все изменения проекта будут отслеживаться в папке тегов.Это не большая проблема для меня, но ветвление сейчас, кажется, становится болью.

В настоящее время я также работаю над подключением Teamcity к этому, что было бы немного проще, так как мне нужно было бы просматривать только один каталог (например, теги), чтобы перехватить все, что нужно построить.Я также внедряю артефакты в корпоративный репозиторий Nessus.

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

Мне нравится идея создания и развертывания всех проектов с помощью одной команды maven.Мне также нравится иметь все общие зависимости, информацию о хранилище и информацию о плагине в одном месте.

Ответы [ 2 ]

25 голосов
/ 14 декабря 2010

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

+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>

Children Projectsнеобязательно может быть зависимым.

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

4 голосов
/ 26 августа 2013

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

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

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