如何在repl中加载新的clojure库

zca*_*ate 11 clojure

所以我有这个工作流程问题:

我很乐意在我的clojure项目repl上输入,并意识到我需要另一个不在我的库project.clj,比如说在这种情况下,我需要tools.cli库.

project.clj在我的编辑器中打开并添加一个条目:dependencies

     [org.clojure/tools.cli "0.2.1"]
Run Code Online (Sandbox Code Playgroud)

然后,在项目目录中,我输入lein depsshell以引入必要的库

在拉动项目依赖项之后,从技术上讲,所有类文件都已准备好加载,但是如果我回到我的repl并输入:

> (use 'tools.cli)
Run Code Online (Sandbox Code Playgroud)

我明白了:

=>> FileNotFoundException Could not locate tools/cli__init.class
  or tools/cli.clj on classpath:   clojure.lang.RT.load (RT.java:432)
Run Code Online (Sandbox Code Playgroud)

所以我必须重新启动我的repl,浪费了一大堆时间将repl的状态重新配置到我需要库之前的位置.

有没有办法动态加载库?例如,在我运行之后,lein deps我只需返回到repl并输入:

> (load-library "tools.cli") 
> (use 'tools.cli)
Run Code Online (Sandbox Code Playgroud)

提前致谢

mik*_*era 7

石榴适合你:

https://github.com/cemerick/pomegranate

它支持在运行时下载和添加新的依赖项,例如:

(add-dependencies :coordinates '[[incanter "1.2.3"]]
                  :repositories (merge cemerick.pomegranate.aether/maven-central
                                       {"clojars" "http://clojars.org/repo"}))
Run Code Online (Sandbox Code Playgroud)