Мы используем Maven и Nexus для распространения компонентов (проектов Maven) внутри нашей инфраструктуры. Ради аргумента, допустим, у нас есть две команды: Team Foo и Team Bar; и что компонент из Bar зависит от компонента от Foo.Как мне получить последнюю версию проекта Maven для тестирования контракта?
Команда Bar хочет написать контрактные тесты для проверки того, работает ли компонент foo
, как и ожидалось. Те тесты будут проводиться каждую ночь против последней стабильной версии проекта foo
(git master после CI). Может ли командный бар написать проект Maven bar/pom.xml
, который зависит от последней версии foo
? Как мы можем это сделать?
Мы играем с идеей решения этой проблемы путем именования версий. Мы всегда будем называть разрабатываемую версию как master-SNAPSHOT
(или что-то еще), а вместо ярлыка версии 0.1-SNAPSHOT -> 0.1 -> 0.2-SNAPSHOT -> 0.2
оно всегда будет возвращаться к master-SNAPSHOT
, например master-SNAPSHOT -> 0.1 -> master-SNAPSHOT -> 0.2
. Проект по тестированию контрактов bar
мог бы объявить свою зависимость до foo
как com.acme:foo:master-SNAPSHOT
.
Но это кажется слишком неуклюжим (нарушает обычную практику Maven и т. Д.) ... Существует ли более стандартная практика для такого рода вещей? Должны ли мы использовать Maven Versions Plugin? Должны ли мы вставлять последнюю версию в проект Maven извне? Или, может быть, канава Мейвена?
Почему ' -SNAPSHOT' не подходит? –
lexicore
подходит. но он аналогичен «master-SNAPSHOT». или не так ли? –
Я не имел в виду '' буквально, я имел в виду '0.1-SNAPSHOT',' 0.2-SNAPSHOT' и т. Д. –
lexicore