Для проекта с большим количеством артефактов Maven (как внутренних, так и внешних), как можно автоматизировать выпуск внутренне контролируемых артефактов как часть общего выпуска продукта.
Что нужно знать об этом вопросе, мы используем Jenkins и плагин релиза Maven. Таким образом, операция по освобождению одного артефакта автоматизирована (хотя операция по запуску процесса является ручной). Однако процесс освобождения всех измененных артефактов в течение выпуска не автоматизирован (то есть нужно вручную запускать запуск каждого артефакта). Часть проблемы заключается в том, что почти ничего не выпущено до конца выпуска, до этого все остается в SHAPSHOT. У нас есть огромное количество компонентов, а также множество приложений / услуг (более 30), которые зависят от множества компонентов. Таким образом, это не просто случай выбора компонента и его выпуска, существуют иерархии зависимостей выпуска, которые должны соблюдаться (т. Е. Начинать с нижних компонентов выпуска, которые не используют другие компоненты, а затем идти вверх, пока все приложения / службы не отпущена).
Стоит также отметить, что мы используем два общих родительских poms, которые, по большей части, управляют версиями зависимостей внешних артефактов и зависимостей внутренних компонентов. Некоторые файлы pom для компонентов и приложений могут переопределить это, но это (или должно быть) исключение и должно быть по уважительной, но временной причине. Поэтому, когда внутренний артефакт освобождается, версия в соответствующем родительском pom зависимости также должна быть обновлена.
Продукт имеет номер выпуска (конечно), однако технически различные файлы pom не имеют этот номер версии. Хотя это не совсем верно, идея о том, что когда части программного обеспечения устанавливаются с истекшим сроком службы, они не будут обновляться в будущем, таким образом, в то время как ограниченное число версий артефактов соответствует версии продукта в настоящее время, в конечном итоге не будет иметь место.
Будем весьма благодарны за любые мысли о способах автоматизации этого процесса. Кроме того, если вы считаете, что описанное мной является сумасшедшим способом управления программным обеспечением, пожалуйста, оставьте комментарий. Спасибо.