У меня довольно сложный рабочий процесс для одной из моих сборок Jenkins. Проект содержит два модуля. Модуль M1 создает службу, а модуль M2 создает службу клиента. М1 зависит от М2 (не спрашивайте меня, почему). M2 нужны заглушки, созданные из EJB в M1. Таким образом, мы находимся в круговой зависимости, которую я пытался обойти с помощью следующего порядка сборки.
- чистая установка mvn (для всего проекта)
- пакет mvn -PCI (для M2 с профилем для сбора всех зависимостей, включая M1 jar)
- копирование артефактов сборки и зависимостей на другой компьютер для создания заглушки
- создать заглушки
- перезаписать артефакт сборки M2 версией, содержащей заглушки
- mvn install: установить (для M2)
при запуске окончательной установки он бомбит:
[ИНФОРМАЦИЯ] [установить: установить {выполнение: default-cli}]
[ИНФОРМАЦИЯ] ----------------------------------------------- -------------------------
[ОШИБКА] ОШИБКА ЗДАНИЯ
[ИНФОРМАЦИЯ] ----------------------------------------------- -------------------------
[INFO] Упаковка для этого проекта не присвоила файл артефакту сборки
[ИНФОРМАЦИЯ] ----------------------------------------------- -------------------------
Так что мне пришла в голову мысль, что, поскольку я уже использую Jenkins и все равно развертываю в наш каталог моментальных снимков, мне не о чем беспокоиться, и я могу опустить локальное развертывание, поскольку оно извлечет более новую версию из снимка все равно репо. В результате Jenkins архивировал артефакт для задания после того, как он запустил установку. Поскольку я не запускал финальную установку, была развернута версия без заглушек (я думаю, что из шага 2).
Затем я сконфигурировал задание Jenkins для явного архивирования моего jar-файла сервис-клиента с опцией post build в дополнение к функции автоматического архивирования интеграции maven. В результате у меня были архивы jar-файлов клиента службы для работы в Jenkins. Один был один на уровне проекта (нужная версия с заглушками) и один на M2 (без заглушек). Разумеется, версия без заглушек была развернута.
Любая идея, как мне выйти из этой дилеммы, не меняя структуру проекта. Я могу добавлять вещи в файлы POM до тех пор, пока желания разработчиков все еще выполняются. Работа Дженкинса - моя сфера.