是否可以在 正在运行 Clojure REPL中下载并安装以前未指定的Maven依赖项?
我正在考虑一种相当常见的情况,即您希望为某些测试或可视化工具暂时快速提取依赖关系,但不想关闭当前的REPL会话。
例如,如果您想在当前的REPL会话中引入Incanter来绘制一些漂亮的数据图表,您可以使用以下内容:
(load-dependency "incanter" "incanter" "1.3.0-SNAPSHOT")
;; now do stuff with Incanter......
据推测,您必须从适当的存储库触发Maven或Leiningen中的依赖性解析/加载,但我不了解它们的内部结构,以了解这是否可能在运行时.......
答案 0 :(得分:6)
Java的默认类加载器行为使这很困难,但pomegrenade (actually, pomegranate)声称能够做你想做的事。
答案 1 :(得分:5)
Alembic是一个leiningen插件,可以将此功能添加到repl。
直接引用自述文件:
Alembic是一个clojure库,允许您在运行的JVM实例中将jar提取到类路径中。您可以使用它以临时方式向正在运行的REPL添加依赖项,或者通过重新加载project.clj文件。
它还添加了一个(load-project)
函数,用于解析project.clj
并动态添加缺少的依赖项。