clojure и leiningen - использование репозитория git в качестве зависимости - PullRequest
35 голосов
/ 29 января 2012

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

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

Обновление

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

Ответы [ 3 ]

22 голосов
/ 29 января 2012

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

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

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

Файл здесь .

10 голосов
/ 29 января 2012

Лейнинген не будет тянуть за вас (редактировать: во всяком случае, не из коробки; следуя указаниям Сунга, вы узнаете, что для этого был написан плагин - см. Также мой комментарийв этом ответе кассовые чеки остаются хорошим встроенным решением) , но вы можете поместить извлечения из других проектов в classpath.Эта функциональность описана в разделе часто задаваемых вопросов README;Вот соответствующие вопросы и ответы:

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

3 голосов
/ 25 ноября 2017

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

Вы можете использовать lein-voom для извлечения и построения зависимостей проекта из GitHub или других репозиториев Git. Он работает, позволяя вам аннотировать записи пары векторов зависимостей мета-данными, специфичными для 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 , а не lein-git-deps (плагин, рекомендованный в ранее принятом ответе от 2012 года) по нескольким причинам:

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

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

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

...