Подтвердить что ты не робот

Clojure и leiningen - использование репозитория git в качестве зависимости

Возможно ли, что leiningen вытаскивает проект непосредственно из репозитория git (на github) в качестве зависимости?

Используя Bundler с Ruby, можно сопоставить драгоценный камень с репо git, что позволяет быстро развивать и интегрировать зависимые проекты.

Обновить

На основе принятого ответа теперь есть плагин leiningen для управления git -deps: https://github.com/tobyhede/lein-git-deps

4b9b3361

Ответ 1

Ответ на 2017: Используйте lein-voom

Вы можете использовать lein-voom, чтобы вытягивать и строить зависимости проекта от GitHub или других репозиториев Git, Он работает, позволяя вам аннотировать записи зависимостей vector-pair зависимости с метаданными, специфичными для voom. Вот пример из README:

^{:voom {:repo "https://github.com/ring-clojure/ring" :branch "1.3"}}
[ring/ring-core "1.3.0-RC1-20140519_142204-gaf0379b"]

Основной прецедент, используемый для voom, позволяет командам, которые поддерживают несколько проектов Clojure в отдельных хранилищах Git, легко зависеть от текущей версии одного или нескольких проектов от другого без постоянного развертывания выпусков моментальных снимков разработки.

Я предпочитаю lein-voom over lein- git -deps (плагин, рекомендованный в ранее принятом ответе с 2012 года) по нескольким причинам:

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

  • Вы можете просто удалить метаданные из своей записи зависимости для стабильных выпусков; то есть нет необходимости перемещать записи вокруг/реорганизовать ваш project.clj после того, как ваша зависимость переместится из GitHub в Clojars.

  • На момент написания статьи (ноябрь 2017 года) lein-voom обновлялся за последние несколько месяцев, тогда как lein- git -deps застаивался в течение 4 лет.

Ответ 2

Я только что нашел это в clojurescriptone project.clj

Я думаю, это может быть полезно для вас:

:git-dependencies [["https://github.com/clojure/clojurescript.git"
                       "886d8dc81812962d30a741d6d05ce9d90975160f"]
                   ["https://github.com/levand/domina.git"
                       "8933b2d12c44832c9bfaecf457a1bc5db251a774"]]

Файл здесь.

Ответ 3

Leiningen не потянет за вас (отредактируйте: не из коробки, так или иначе, следуя примеру ответа Sunng, можно обнаружить, что для этого был написан плагин - см. также мой комментарий к этому ответу, checkout deps остаются хорошим, встроенным решением), но вы можете иметь проверки других проектов, помещенных в путь к классам. Эта функциональность описана в разделе часто задаваемых вопросов README; здесь соответствующие Q & A:

Q: Я хочу, чтобы параллельно обрабатывать два проекта, но это раздражает переключаться между ними.
A:. Если вы создаете каталог с именем checkouts в ваш корень проекта и символические ссылки на другие корни проекта, Leiningen позволит вам взломать их параллельно. Это значит изменения в зависимости будут видны в основном проекте без нужно пройти через все install/switch-projects/deps/restart-repl, а копия в checkouts будет иметь приоритет над заявленной зависимостью project.clj. Обратите внимание, что это не замена для перечисления проект в :dependencies; он просто дополняет это для удобства.