Как обновить версию дочерних модулей? Есть много вопросов Stackoverflow, подобных этому, но я не смог найти тот, который соответствует этому точному сценарию... хотелось бы, если это дубликат.
Рассмотрим следующий проект.
parent
--mod1
--mod2
В начале цикла выпуска dev мне нужно обновить родительский модуль и модули до той же версии. Если версия родителя и модулей осталась неизменной на протяжении всего выпуска, я бы просто опустил тег <version>
из модулей и выполнил versions:set -DnewVersion=1.1.1
, чтобы запустить цикл dev. Но, как оказалось, модули не все заканчивают цикл той же версией. Поскольку ошибки и исправления материализуют только те модули с ошибками и таким образом обновляются. Например, родительский и mod2 могут быть в версии 1.1.1-RC1, но mod1 может быть в 1.1.1-RC2.
Как таковой мне нужно:
1) Включите тег <version>
в модули для независимой отслеживания каждой версии модулей.
2) Если mod2 требует mod1 в качестве зависимости, мне нужно убедиться, что mod2 ссылается на последнюю версию mod1.
Это приводит к следующим двум вопросам.
1) В начале цикла, как я могу установить родительский и модули в одну и ту же версию в одной команде maven? Я попробовал version:set -DnewVersion=1.1.1
, но это только обновляет родительскую версию для всех POM, но не версию модуля. Я также пробовал -N versions:update-child-modules
, но я думаю, что использую его неправильно, потому что он ничего не делает, просто показывает пропущенные для всех модулей.
2) Это немного сложнее и соответствует пункту 2 выше. Как обновить версию mod1 и версию mod2 для версии mod1 за один шаг? Я знаю, как это сделать в 2 этапа:
parent pom:
<properties>
<!-- update this manually if mod1 version no longer matches parent -->
<mod1.version>${project.version}</mod1.version>
</properties>
mod2 pom:
<dependency>
<groupId>com.xxx</groupId>
<artifactId>mod1</artifactId>
<version>${mod1.version}</version>
</dependency>
Когда mod1 сталкивается с 1.1.1-RC2, я обновляю родительский POM и mod1 POM, чтобы отразить это. Это два шага. В любом случае, чтобы превратить его в один шаг?
Мой пример был небольшим, но в реальной жизни есть много модулей, которые делают эту важную экономию времени, плюс мне любопытно.