[英]How can new clojure libraries be loaded in the repl
所以我有這個工作流程問題:
我很樂意在我的clojure項目repl上輸入,並意識到我需要另一個不在我的project.clj
庫,在這種情況下說,我需要tools.cli
庫。
我在編輯器中打開project.clj
並添加了一個條目:dependencies
[org.clojure/tools.cli "0.2.1"]
然后,在項目目錄中,我在shell中鍵入lein deps
以引入必要的庫
在拉動項目依賴項之后,從技術上講,所有類文件都已准備好加載,但是如果我回到我的repl並輸入:
> (use 'tools.cli)
我明白了:
=>> FileNotFoundException Could not locate tools/cli__init.class
or tools/cli.clj on classpath: clojure.lang.RT.load (RT.java:432)
所以我必須重新啟動我的repl,浪費了一大堆時間將repl的狀態重新配置到我需要庫之前的位置。
有沒有辦法動態加載庫? 例如,在我運行lein deps
我只需返回到repl並輸入:
> (load-library "tools.cli")
> (use 'tools.cli)
提前致謝
石榴適合你:
https://github.com/cemerick/pomegranate
它支持在運行時下載和添加新的依賴項,例如:
(add-dependencies :coordinates '[[incanter "1.2.3"]]
:repositories (merge cemerick.pomegranate.aether/maven-central
{"clojars" "http://clojars.org/repo"}))
這樣的事情會對你有用嗎?
https://groups.google.com/d/msg/clojure/AJXqbpGMQw4/0-7-3pXRwGkJ
還有clojure.core / add-classpath,但它已被棄用。
http://clojuredocs.org/clojure_core/clojure.core/add-classpath
您可以使用lein-try
在repl中試用一個庫。
~/.lein/profiles.clj
:
{:user {:plugins [[lein-try "0.4.3"]]}}
command line
:
$ lein try clj-time "0.5.1"
Fetching dependencies... (takes a while the first time)
lein-try loaded [clj-time "0.5.1"]
nREPL server started on port 57036
REPL-y 0.2.0
Clojure 1.5.1
Docs: (doc function-name-here)
(find-doc "part-of-name-here")
Source: (source function-name-here)
Javadoc: (javadoc java-object-or-class-here)
Exit: Control+D or (exit) or (quit)
user=>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.