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, в противном случае у вас есть ад обслуживания для репозиториев, с которыми вы сталкивались.

Другие вопросы по тегам