В нашей компании у нас есть два параллельных проекта с похожим версионированием.Давайте назовем одно 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-запроса оказалось недостаточным в этом случае.