Какова хорошая стратегия для поддержания удовлетворенности переходной зависимости Maven? - PullRequest
0 голосов
/ 04 мая 2018

Недавно я столкнулся с трудностью найти транзитивно зависимый артефакт Maven при создании нашего продукта, что подтолкнуло меня к мысли, какова правильная стратегия для решения этой ситуации.

В моем CI создания продукта мне нужно использовать плагин Maven-Unix-Plugin, который нам виден. Этот плагин транзитивно зависит от функции-Java, которая нам не видна.

У нас есть репозиторий Nexus, который является прокси для репозитория Maven. Так что в идеальной ситуации нам не нужно хранить ни maven-unix-plugin, ни functions-java.

Однако я обнаружил, что ожидаемая версия maven-unix-plugin все еще существует в репозитории Maven, но его зависимая версия functions-java исчезла! Более иронично, что для всех версий maven-unix-plugin, чья зависимая версия функционала-java исчезла! Короче говоря, плагин maven-unix больше не может использоваться!

Проще говоря, это звучит как проблема целостности репозитория Maven. Тем не менее, моя основная мысль заключается в том, как мы можем избежать этого на нашей стороне? Теперь мне удалось найти старый версионный функционал-java и поместить его в наш Nexus. Однако, во-первых, для нас невозможно выяснить все переходные иждивенцы и поместить их всех в наш Nexus. Идеальная картина Maven - мы НЕ ДОЛЖНЫ это делать!

Конечно, если мы постоянно строим и поддерживаем нашу систему (и в идеале продолжаем обновлять версию зависимости), мы не должны были сталкиваться с этой проблемой. Тем не менее, мы очень маленькая команда, чтобы поддерживать длинный список огромных устаревших систем. Последняя сборка для этого продукта на самом деле 2 года назад!

Какие-нибудь блестящие идеи, какие хорошие стратегии для такого рода головных болей произойдут в будущем?

1 Ответ

0 голосов
/ 04 мая 2018

Прежде всего, MavenCentral очень редко удаляет артефакты, и только в случае крайней необходимости. Так что эта проблема, скорее всего, не ударит вас снова.

Если вы хотите, чтобы эта проблема больше не возникала, сделайте резервную копию хранилища вашего репозитория Nexus. Все артефакты, извлеченные из MavenCentral через ваш Nexus, будут храниться в вашем хранилище Nexus. Таким образом, даже если MavenCentral будет полностью уничтожен завтра, они все равно будут существовать в вашем Nexus.

...