Недавно я столкнулся с трудностью найти транзитивно зависимый артефакт 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 года назад!
Какие-нибудь блестящие идеи, какие хорошие стратегии для такого рода головных болей произойдут в будущем?