所以我有这个工作流程问题:
我很乐意在我的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)
提前致谢
石榴适合你:
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)