10

是否可以在运行的Clojure REPL中下载和安装以前未指定的 Maven 依赖项?

我正在考虑一种相当常见的情况,您希望为某些测试或可视化工具临时快速引入依赖项,但又不想关闭当前的 REPL 会话。

例如,如果你想在当前的 REPL 会话中引入 Incanter 来绘制一些漂亮的数据图表,你可能会使用如下内容:

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

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

据推测,您必须从适当的存储库触发 Maven 或 Leiningen 中的依赖关系解析/加载,但我对它们的内部结构了解不足,无法知道在运行时这是否可能......

4

2 回答 2

6

Java 的默认类加载器行为使这变得困难,但pomegrenade(实际上是 pomegranate)声称能够做你想做的事。

于 2011-10-10T10:25:27.280 回答
6

Alembic是一个 leiningen 插件,可将此功能添加到 repl。

README 中的直接引用:

Alembic 是一个 clojure 库,可让您在运行的 JVM 实例中将 jar 提取到类路径中。您可以使用它以临时方式或通过重新加载 project.clj 文件来将依赖项添加到正在运行的 REPL。

它还添加了一个(load-project)函数来解析project.clj并动态添加缺少的依赖项。

于 2013-09-23T12:59:12.570 回答