Есть ли способ добавить зависимость в проект lein без перезапуска REPL?


То, что я делаю сейчас, - это открытый проект.clj, добавьте туда зависимость, запустите lein deps restart repl, затем use, require и так далее.

Дело в том, что я не очень люблю перезапускать repl, потому что время запуска медленно, и мне нужно снова перезагрузить файлы.

Так есть ли лучший способ добавить зависимость в проект lein? без перезапуска repl?

2 40

2 ответа:

Вы можете использовать перегонный куб, динамический загрузчик путей к классам и решатель зависимостей. Хорошо, что он не загружает все гранатовые зависимости.

Добавьте следующее к вашему .lein/profiles.clj:

{:user
  {:dependencies [[alembic "0.3.2"]]}}

Тогда в вашем Repl просто загрузите нужные вам пути классов, они будут извлечены из репозиториев lein, если потребуется:

(require 'alembic.still)
(alembic.still/distill '[enlive "1.1.5"])

(require 'net.cgrand.enlive-html) теперь должно получиться.

Для быстрого тестирования вы можете использовать гранат для добавления зависимостей на лету

=> (use '[cemerick.pomegranate :only (add-dependencies)])
nil
=> (add-dependencies :coordinates '[[incanter "1.2.3"]])

Для фактического добавления зависимости я обычно хит

  • Alt-x nrepl-restart
  • сочетание клавиш Ctrl-ссочетание клавиш Ctrl-к, чтобы перезагрузить файл,
  • ctrl-calt-n , чтобы вернуться в пространство имен i в буфере
Весь процесс занимает время запуска jvm (которое, я согласен, немного болезненно) плюс пять секунд. Это помогает сохранить ваш проект в состоянии, когда загрузка файла делает все необходимые инициализации.