2012-05-17 2 views
2

Должен ли я создать локальный репозиторий для изменения зависимостей зависимостей в моем проекте?Как использовать lein для управления зависимостью зависимости?

У меня есть проект clojure, который использует docjure. docjure содержит зависимость от poi 3.6.

Из-за ошибки в сгенерированных файлах Excel, которые я читаю, у меня есть локальная версия poi 3.8, которую я взломал, чтобы обход ошибки.

Достаточно легко вставить мои баны 3.8 в мои проекты lib/directory, чтобы мой проект запустился нормально.

Но, lein deps (или jar и uberjar) счастливо очищает каталог lib/и переустанавливает версии 3.6 для poi, нарушая мою сборку.

Я думаю, что вероятное решение два раза:

1 - кладу взломан пои 3.8 в локальный репозиторий 2 - создать свою собственную локальную копию docjure и обновить его зависимости, чтобы указать, что локальное хранилище.

Я ищу подтверждение, что это «правильная вещь», чтобы сделать в этом случае или кого-то, чтобы указать, что гораздо проще просто сделать что-то еще.

ответ

4

Стоит прочитать wiki-страницу Leiningen's Repeatability, если вы еще этого не сделали. Процитируем часть этого:

Если код является открытым, вы должны открыть отчет об ошибке с вверх по течению, чтобы заставить их опубликовать в общедоступном хранилище, как Clojars, Sonatype или Maven Central, в зависимости от проекта. Если они устойчивы или слишком медленны, всегда можно опубликовать «Кложарские вилки»; см. информацию о том, как использовать lein для более подробной информации.

Окончательное решение состоит в том, чтобы попытаться внести изменения в движение вверх. Тогда вы можете зависеть от нужной вам версии, а я думаю Leiningen предпочтет эту версию, если она выше транзитивной версии.


Другим вариантом может быть включение вашей банки в безопасную (зарегистрированную) директорию. Затем напишите плагин, который может hook into a built-in task и скопируйте банку в ваш каталог lib для вас. Я действительно не знаю, будет ли это успешным, но стоит посмотреть.

+0

Спасибо за указатель на страницу Повторяемость, Джереми. Хак, который я установил в poi, удаляет (правильно обнаруженное) условие Исключения. Корневая проблема заключается в том, что файл Excel некорректно форматируется внутри. Читатель poi правильно определяет этот конкретный случай. Таким образом, это не совсем исправление, а плохое обходное решение. –

+0

@tom_b, Может быть, создать плагин? Проверьте мое обновление. – Jeremy

+1

Я могу попробовать подключить плагин, просто потому, что он выглядит странно. Спасибо за ссылку. В конечном счете, я, вероятно, создаю локальный репозиторий просто для поддержки/обслуживания. –

Смежные вопросы