Динамически загружать зависимости в Clojure REPL - PullRequest
7 голосов
/ 10 октября 2011

Можно ли загрузить и установить ранее неопределенные зависимости Maven в , работающем Clojure REPL?

Я имею в виду довольно распространенный случай, когда вы хотитечтобы быстро получить зависимость временно для некоторых инструментов тестирования или визуализации, но не хотите закрывать текущий сеанс REPL.

Например, если вы хотите использовать Incanter для рисования некоторых симпатичных диаграмм данных в текущем сеансе REPL, вы можете использовать что-то вроде следующего:

(load-dependency "incanter" "incanter" "1.3.0-SNAPSHOT")

;; now do stuff with Incanter......

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

Ответы [ 2 ]

6 голосов
/ 10 октября 2011

Поведение загрузчика классов по умолчанию в Java делает это трудным, но граната (на самом деле, граната) утверждает, что может делать то, что вы хотите.

5 голосов
/ 23 сентября 2013

Alembic - плагин leiningen, который добавляет эту функциональность в ответ.

Прямая цитата из README:

Alembic - это библиотека clojure, которая позволяет вам отправлять файлы jar на ваш путь к классам в работающем экземпляре JVM. Вы можете использовать его для добавления зависимостей в работающий REPL, либо в режиме ad-hoc, либо перезагрузив файл project.clj.

Также добавлена ​​функция (load-project), которая анализирует project.clj и добавляет отсутствующие зависимости на лету.

...