2015-02-04 3 views
1

Я работаю в проекте maven с несколькими зависимостями на нескольких уровнях, и каждый раз, когда выполняется выпуск основного проекта, мы должны создавать множество вторичных выпусков вручную. Я попытаюсь объяснить ситуацию. Мой сценарий заключается в следующем:Maven/Jenkins - Автоматические релизы проекта и зависимостей

Проект A

  1. Зависимость B
    • Зависимость E
    • Зависимость F
      • Зависимость G
  2. Зависимость C
    • Зависимость G
      • Зависимость H
  3. Зависимость D

Каждая зависимость является независимым проектом Maven и существует много уровней зависимостей внутри проектов. Если вы немного изменить код зависимостей G и ваше намерение состоит в том, чтобы генерировать Project A-релиз вы должны:

  1. Сформировать выпуск проекта G
  2. Обновление зависимостей G версии на проекте F
  3. Сформировать выпуск проекта F
  4. Обновление зависимостей F версия от проекта B
  5. Сформировать релиз проекта B
  6. Обновление версии зависимость B от проекта A
  7. Генерировать выпуск проекта A

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

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

ответ

0

Возможно, вы можете использовать комбинацию из Build Flow plugin и Maven Release plugin, чтобы опубликовать ваши проекты Maven.

Плагин Build Flow поможет вам сконструировать последовательность сборки (и будет уважать ваши зависимости проекта).

Это просто идея, я не тестировал это решение.

0

В Jenkins вы можете использовать разные репозитории для загрузки и создания сборки, в этом случае вы выполните выпуск. Надеюсь, вы используете maven-release-плагин. Таким образом, вы можете использовать эту функцию jenkins, чтобы загрузить все проекты, о которых вы упомянули, и создать или скачать pom.xml-файл из репо, который содержит каждый проект в качестве модуля (просто для достижения вашей цели).

Структура в рабочем пространстве Дженкинс должен выглядеть следующим образом:

  • pom.xml
  • ModuleA pom.xml
  • moduleB pom.xml
  • moduleC pom.xml

Мой совет - сгруппировать их в репозитории, если это необходимо редактор

Смежные вопросы