Автоматизация выдачи артефактов Maven - PullRequest
2 голосов
/ 07 декабря 2011

Для проекта с большим количеством артефактов Maven (как внутренних, так и внешних), как можно автоматизировать выпуск внутренне контролируемых артефактов как часть общего выпуска продукта.

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

Стоит также отметить, что мы используем два общих родительских poms, которые, по большей части, управляют версиями зависимостей внешних артефактов и зависимостей внутренних компонентов. Некоторые файлы pom для компонентов и приложений могут переопределить это, но это (или должно быть) исключение и должно быть по уважительной, но временной причине. Поэтому, когда внутренний артефакт освобождается, версия в соответствующем родительском pom зависимости также должна быть обновлена.

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

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

1 Ответ

2 голосов
/ 31 января 2012

Возможно, вы сможете использовать плагин Maven Versions , который может помочь формализовать версии для проектов.

Например, цель use-next-release может позволить вам выпуститьсамый низкий уровень проекта, а затем более быстрое приведение этих выпущенных версий в их зависимости.

Может также быть возможность использовать цель use-next-version, если вы хотите выпускать компоненты по мере необходимости и просто приводить свои проекты в«последняя» версия, официально выпущенная.

...