Проверка Maven переменных, чтобы избежать проблем параллельного управления версиями - PullRequest
0 голосов
/ 13 июня 2019

В нашей компании у нас есть два параллельных проекта с похожим версионированием.Давайте назовем одно fw , а другое app .Номера версий основаны на месяце выпуска, например, 19.5, 19.6 и т. Д. К ним можно добавлять добавочные числа, поэтому fw может использовать 19.5.0-15, тогда как app - 19.5.0-125.Таким образом, технически любая fw -version может быть правильной версией в app и наоборот.

app состоит избольшее количество подпроектов.Родительский pom определяет версию app , которая применяется ко всем подпроектам.Он также определяет переменную fw.version, которая указывает на используемую в настоящее время версию fw .Он также доступен в подпроектах.

Как правило, разработчики в app используют переменную project.version для объявления зависимостей между подпроектами.

<dependency>
   <groupId>app</groupId>
   <artifactId>app.subproject</artifactId>
   <version>${project.version}</version>
</dependency>

Конечно, они также могут объявлять зависимости для части fw

<dependency>
   <groupId>fw</groupId>
   <artifactId>fw.subproject</artifactId>
   <version>${fw.version}</version>
</dependency>

Но иногда, из-за копирования и вставки, они используют fw версия для app зависимости.

<dependency>
   <groupId>app</groupId>
   <artifactId>app.subproject</artifactId>
   <version>${fw.version}</version>
</dependency>

Это может работать некоторое время, если app.subproject доступен в хранилище.Но в конце концов он будет недоступен, поэтому сборка завершится сбоем.

Есть ли способ, возможно, с помощью maven-plugin, чтобы обнаружить и избежать такого рода проблем?Рассмотрение Pull-запроса оказалось недостаточным в этом случае.

1 Ответ

1 голос
/ 13 июня 2019

Я не пробовал, но есть правило принудительного применения

https://maven.apache.org/enforcer/enforcer-rules/reactorModuleConvergence.html

Это правило проверяет различные "хорошие практики" для многомодульной сборки, включая требование, чтозависимости от других модулей имеют правильную версию.

Я бы попробовал.

...