Я пытаюсь автоматизировать выпуск взаимозависимых проектов. Вот сценарий. У меня есть два проекта: A и B. Проект B зависит от проекта A. Вот шаги, которые необходимо выполнить в автоматизированной процедуре:
- Выпустите проект A, используя maven-release-plugin. (Я знаю, как это сделать). Вот последовательность целей, которые я определил: release: clean release: prepare -DcommitByProject = true -DautoVersionSubmodules = true release: выполнить
Разверните последнюю версию SNAPSHOT проекта A в репозиторий. (Использование простого развертывания работает. Однако есть небольшая загвоздка, которую я описал ниже.)
Обновите версию зависимости SNAPSHOT проекта A в проекте B до последней версии, прежде чем выполнять полную версию. Для этого я установил цели подготовки следующим образом (версии чистой проверки: использование последних версий: фиксация) в файле POM проекта B.
Вроде все нормально работает.
Теперь я хочу, чтобы после завершения выпуска Project A в Project B была установлена зависимость от последней версии SNAPSHOT, которая была установлена во время выпуска с помощью подключаемого модуля release: prepare.
Решение, которое я придумал, заключалось в том, чтобы выполнить развертывание maven для проекта A SNAPSHOT сразу после выполнения release: perform. (Новая последовательность целей для проекта A: выпуск: чистый выпуск: подготовка -DcommitByProject = true -DautoVersionSubmodules = истинный выпуск: выполнить развертывание чистой установки)
Затем я могу выполнить версии: использовать следующие-моментальные снимки в конце цикла выпуска проекта B. (Новая последовательность целей для проекта B: выпуск: чистый выпуск: подготовка -DcommitByProject = true -DautoVersionSubmodules = true выпуск: выполнение версий: использование следующих-снимков). Здесь я ограничиваю свой плагин версий, чтобы он обрабатывал только зависимости проекта A.
Проблема в том, что когда я выполняю цели для проекта A. Maven развертывает SNAPSHOT со старой версией, а не с увеличенной версией. Итак, если версия до выпуска для проекта A была 1.1-SNAPSHOT. Версия после выпуска теперь - 1.2-SNAPSHOT. Версия выпуска - 1.1. Однако развернутой версией моментального снимка проекта A является 1.1-SNAPSHOT, а не 1.2-SNAPSHOT.
Я предполагаю, что maven не обновляет pom в памяти после выполнения целей maven-release-plugin.