#clojure #dependencies #leiningen
Вопрос:
У меня есть проект Clojure Leiningen, который имеет две зависимости A
B
и транзитивную зависимость X
, от которой A
и B
зависит.
A → X [version 1.0]
B → X [version 2.0]
Оба A
и B
являются внешними зависимостями. Проблема в том, что я не могу использовать версию 2 X
для A
или версию 1 X
для B
, так как она выбрасывает java.lang.NoSuchMethodError
Есть ли в Clojure плагин, который может помочь затенить переходные зависимости для обоих A
и B
или предоставить идиоматический способ решения этой проблемы?
Комментарии:
1. Возможно, стоит устранить проблему в зависимости
A
и отправить PR. Или, по крайней мере, отправьте запрос на обновление библиотеки.2. ДА. Я запросил то же самое у разработчиков зависимостей
A
. Кажется идеальным/долгосрочным решением.
Ответ №1:
https://github.com/benedekfazekas/mranderson возможно, это то, что вы ищете, если это источник Clojure.
Комментарии:
1. Это хорошая библиотека. Он создал папку в
target/srcdeps
тени зависимости, которая помечена, включая все ее зависимости (переходные). Однако я видел проблемы с разрешением импорта классов java, и мне пришлось вручную исправлять их один за другим и копировать затененную зависимость обратно в исходное дерево, изменяя пространства имен, чтобы заставить ее работать. Поскольку этот подход испортит мою кодовую базу, я в конечном итоге попросил разработчиковA
обновитьX
ее .