Maven;как сломать обратную совместимость? - PullRequest
4 голосов
/ 05 апреля 2011

Maven имеет систему управления версиями, которая выбирает самую высокую версию библиотеки, если на нее ссылаются несколько версий. Например, если pom A относится к версии 1.1, а pom B к 1.2, тогда pom C (относящийся как к A, так и к B) будет использовать самую высокую версию; 1.2.

Этот подход предполагает, что 1.2 на 100% обратно совместим с 1.1, и это хороший и требуемый подход. Однако в определенные моменты жизненного цикла библиотек целесообразно навести порядок в магазине. Для меня любые серьезные изменения в API означают увеличение основной версии, поэтому версия 2.0 не обязательно должна быть обратно совместимой на 100% с последней версией 1.x. Хорошо.

Однако Maven на самом деле все равно, и если pom B будет обновлен с 1.2 до 2.0, Maven будет использовать 2.0, но pom A не сможет работать с этой версией.

Как сообщить Maven, что версия больше не обратно совместима?

Я пытался указать исключение диапазонов, поэтому A относится [1.1,1.999), а B ссылается [2.0,2.999). Тем не менее, Maven все еще решает максимальный номер версии (2.0).

Ответы [ 3 ]

3 голосов
/ 05 апреля 2011

Во-первых, это плохая практика - использовать диапазоны версий в Maven Builds, кроме того, вам нужно определить определение нумерации версий, которое говорит, что 1.0 и 1.1 должны быть обратно совместимы, тогда как 2.0 - нет, но это определение, которое вы должны делать. Maven не знает об этом. Я бы порекомендовал использовать Major.Minor.Increment-Qualifier и т. Д. По моему мнению, вы должны закрепить свои версии исправления, иначе вы не сможете воспроизвести свои сборки.

1 голос
/ 05 апреля 2011

Я бы изменил идентификатор артефакта (возможно, добавив основной номер версии). Это сделало бы версии 1.x и 2.x разными животными для Maven.

0 голосов
/ 07 апреля 2011

Вы смотрели в плагин Maven Enforcer?у него может быть что-то вроде этого, или вы можете написать собственное правило.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...