Maven и Nexus обрабатывают зависимости SNAPSHOT
Мой проект содержит около 10 компонентов многократного использования, каждый из которых находится в своем собственном репозитории, независимое управление версиями, но при сборке они полагаются друг на друга.
Прямо сейчас у каждого компонента есть свой собственный репозиторий nexus SNAPSHOT и пользовательская группа nexus для ночных сборок, так что я могу быть уверен, что ночная сборка компонента включает в себя только стороннюю версию и другие необходимые ей компоненты. В частности, группа не будет иметь собственного репозитория моментальных снимков компонента. Таким образом, я могу определить, когда баночка была удалена, но я забыл очистить зависимость от нее. Сборка будет сломана, а не тихо, потому что она нашла старую банку SNAPSHOT.
Но это огромная проблема с точки зрения менеджмента, и из того, что я видел в общедоступных репозиториях Nexus (и в книге Sonatype), есть единый репозиторий для команды или организации, а не для каждого компонента.
Есть ли лучший способ справиться с этим? Есть ли способ установить черный список nexus в компонентном pom, чтобы он не пытался загрузить определенные комбинации идентификаторов артефактов / групп?
1 ответ
Черный список в поме не представляется возможным. Я предполагаю, что ваша настройка вашего проекта неверна.
Я бы предложил создать многомодульный проект для вашего проекта, который имеет все модули (многократно используемые компоненты).
big-project (pom.xml)
+--- module1 (pom.xml)
+--- module2 (pom.xml)
+--- module3 (pom.xml)
+--- module4 (pom.xml)
..
что даст вам преимущество, имея только одну версию всех компонентов вместе и простое решение для их сборки без сохранения зависимостей и, в частности, в разных версиях и с состоянием согласованности вашего проекта, потому что вы можете видеть, какой компонент (модуль) с какими версиями других компонентов работает.
В вашей настройке очень трудно узнать, какая версия какого компонента работает с другим компонентом в определенной версии.
Помимо вышесказанного, это упрощает создание интеграционных тестов как часть более простой сборки:
big-project (pom.xml)
..
+--- it-mod (pom.xml)
..
Кроме того, вы можете использовать отдельные модули (компоненты) из других проектов.
Использование разных репозиториев SNAPSHOT в Nexus не имеет смысла, потому что у каждого компонента должна быть координата groupId/artifactId/version, чтобы вы могли использовать один репозиторий SNAPSHOT, в противном случае у вас есть ад обслуживания для репозиториев, с которыми вы сталкивались.