Есть ли способ добавить зависимость в проект lein без перезапуска REPL?
То, что я делаю сейчас, - это открытый проект.clj, добавьте туда зависимость, запустите lein deps
restart repl, затем use
, require
и так далее.
Дело в том, что я не очень люблю перезапускать repl, потому что время запуска медленно, и мне нужно снова перезагрузить файлы.
Так есть ли лучший способ добавить зависимость в проект lein? без перезапуска repl?
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"]])
Для фактического добавления зависимости я обычно хит
Весь процесс занимает время запуска jvm (которое, я согласен, немного болезненно) плюс пять секунд. Это помогает сохранить ваш проект в состоянии, когда загрузка файла делает все необходимые инициализации.
- Alt-x nrepl-restart
- сочетание клавиш Ctrl-ссочетание клавиш Ctrl-к, чтобы перезагрузить файл,
- ctrl-calt-n , чтобы вернуться в пространство имен i в буфере