Clojure и leiningen - использование репозитория git в качестве зависимости
Возможно ли, что leiningen вытаскивает проект непосредственно из репозитория git (на github) в качестве зависимости?
Используя Bundler с Ruby, можно сопоставить драгоценный камень с репо git, что позволяет быстро развивать и интегрировать зависимые проекты.
Обновить
На основе принятого ответа теперь есть плагин leiningen для управления git -deps:
https://github.com/tobyhede/lein-git-deps
Ответы
Ответ 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
; он просто дополняет это для удобства.