Как настроить Jenkins для многомодульного проекта Maven - PullRequest
3 голосов
/ 28 октября 2011

У меня есть мультимодульный проект Maven. Структура выглядит так:

-modulA         (Main project)
   - pom.xml
-parentModul    (Aggregator)
   - pom.xml
   - ModulB     (Integration Test Project)
       -pom.xml

Определение пакета похоже на:

<project ...>
<modules>
    <module>../modulA</module>
    <module>ModulB</module>
</modules>


Один из модулей (ModulA) имеет тот же уровень иерархии, другой находится в родительском модуле. Я пытаюсь добавить работу в Дженкинс, чтобы построить все автоматически. (чистый пакет) ..

Как мне настроить задание, чтобы parentModul обнаружил другие модули и собрал проект .??

Ответы [ 3 ]

2 голосов
/ 28 октября 2011

Добавить еще один агрегатор.Поместите modulA и parentModul в один и тот же каталог и на один уровень выше них, просто добавьте еще один pom следующим образом:

aggregator/
|- modulA/
|  |- pom.xml
|- parentModul/
|  |- modulB/
|  |  |- pom.xml
|  |- pom.xml
|- pom.xml

В aggregator / pom.xml определите раздел модулей следующим образом:

<project ...>
    <modules>
        <module>modulA</module>
        <module>parentModul</module>
    </modules>
</project>
1 голос
/ 28 марта 2013

Одним из решений было бы использование SVN Externals для сборки рабочей области нормального проекта Maven из безумной структуры SVN даже на разных серверах SVN. Использование svn external не является идеальным решением, так как это вызовет проблемы с плагином Maven Release и опросом SCM CI в определенной конфигурации. Они говорят вам: «Вы не должны использовать SVN Externals», поскольку делает жизнь сложнее. Но то же самое можно сказать о голодах и костылях, но когда у вас сломана нога (или структура svn, представляющая собой fubar), вы действительно не возражаете против неудобств.

Есть несколько способов сделать это, в зависимости от вашей структуры SVN и желаемой структуры рабочего пространства:

  1. svn co modulA
  2. cd modulA
  3. svn propedit svn:externals . Примечание: обратите внимание на точку (curdir) в конце строки!
  4. добавить следующую строку: parentModul http://path.to.your.svn.location.of.parentModul
  5. svn ci -m "добавлены внешние ссылки для родителей"
  6. svn up

и svn извлекает (и передает) ваш код в следующую структуру рабочего пространства

modulA/
|  |- pom.xml
parentModul/
|- modulB/
|  |- pom.xml
|- pom.xml
pom.xml

Или вы можете добавить новый каталог в SVN 'workplace' и добавить туда новый pom.xml и получить все модули, которые вам когда-либо понадобятся через внешние SVN, на один уровень (или на несколько уровней).

0 голосов
/ 28 октября 2011

В моем случае невозможно добавить другой родительский проект. Модуль уже проверен в SVN независимо от других.

Это указывает на то, что вы, вероятно, ошиблись, указав moduleA в разделе <modules> Если moduleA имеет другой жизненный цикл, то вы должны включить его в качестве зависимости.

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