簡體   English   中英

如何在項目外運行lein repl?

[英]How can I run lein repl outside of a project?

昨晚我花了一些時間弄亂我的leinigenprofiles.clj來擺脫在我的項目中啟動蘋果酒時打印的所有錯誤。 今天,我從終端開始復制(我喜歡在工作時保持打開狀態),但是沒有用。 我以為這是蘋果酒的問題,所以我在Emacs中嘗試過,但是即使在Emacs中,如果我不在項目中,REPL也不會啟動。

這是錯誤:

Error loading refactor-nrepl.middleware: clojure.lang.ArityException: Wrong number of args (4) passed to: StringReader, compiling:(abnf.clj:186:28)
Exception in thread "Thread-4" java.lang.RuntimeException: Unable to resolve var: refactor-nrepl.middleware/wrap-refactor in this context, compiling:(NO_SOURCE_PATH:0:0)
...
Caused by: java.lang.RuntimeException: Unable to resolve var: refactor-nrepl.middleware/wrap-refactor in this context

我的〜/ .lein / profiles.clj

{:user {:plugins [[lein-try "0.4.3"]
                  [refactor-nrepl "1.1.0"]
                  [cider/cider-nrepl "0.9.1"]]
        :dependencies [[org.clojure/tools.nrepl "0.2.12"]
                       [acyclic/squiggly-clojure "0.1.4"]
                       ^:replace [org.clojure/tools.nrepl "0.2.12"]
                       [refactor-nrepl "1.1.0"]]}}

蘋果酒在項目中啟動時的版本

; CIDER 0.9.1 (Java 1.8.0_45, Clojure 1.7.0, nREPL 0.2.12)

對於Clojure,Leinigen,Emacs等,我還是很陌生,所以我不確定為什么上面的所有內容都會使我的蘋果酒錯誤消失,但是確實如此。 我遇到的蘋果酒錯誤與nrepl版本太低並且沒有安裝某些東西有關(例如refactor-nrepl)。

當使用lein repl repl從lein啟動一個repl時,它真的想在lein項目目錄中運行。 為此,我在家庭目錄中保留了一個名為clj的空lein項目。 這樣,我的常見依賴項已經在project.clj文件中,並且lein按照我喜歡的方式進行了預配置。

您可以在一個空的目錄中啟動lein repl ,但是每次啟動前都會收到10-20條錯誤消息。

另一種方法是使用內置在clojure jar文件中的普通repl:

~/dummy > cp /home/alan/.m2/repository/org/clojure/clojure/1.8.0-RC1/clojure-1.8.0-RC1.jar .   
~/dummy > d *
-rw-rw-r-- 1 alan alan 3935726 Nov 19 14:11 clojure-1.8.0-RC1.jar
~/dummy > java -jar clojure-1.8.0-RC1.jar 
Clojure 1.8.0-RC1
user=> 

如您所見,我創建了一個名為dummy的空目錄,並將其復制到clojure-*.jar文件中。 然后,可以使用java -jar xxx.jar語法運行它,它將完全獨立於lein觸發repl。

我也只是保留一個草稿項目,用於快速/簡單的repl會話。 有一個lien-oneoff插件,可以簡化使用簡單的單文件lein項目的工作,這可能會很有用。

您可以做的另一件事是設置啟動配置,以便基本上可以正常使用

您的lein版本是什么,我使用2.5.3 ,我可以在任何地方啟動lein repl

Shell:~ >: lein repl
nREPL server started on port 52343 on host 127.0.0.1 - nrepl://127.0.0.1:52343
REPL-y 0.3.7, nREPL 0.2.10
Clojure 1.7.0
Java HotSpot(TM) 64-Bit Server VM 1.8.0_60-b27
    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)
 Results: Stored in vars *1, *2, *3, an exception in *e

user=> Bye for now!
Shell:~ >: lein version
Leiningen 2.5.3 on Java 1.8.0_60 Java HotSpot(TM) 64-Bit Server VM

Shell:~ >: cat .lein/profiles.clj 
{:1.2 {:dependencies [[org.clojure/clojure "1.2.0"]]}
 :1.3 {:dependencies [[org.clojure/clojure "1.3.0"]]}
 :1.4 {:dependencies [[org.clojure/clojure "1.4.0"]]}

 :user {:plugins [[lein-immutant "2.0.0-alpha2"]
                  [lein-clojars "0.9.1"]
                  [lein-ancient "0.5.5"]
                  [lein-kibit "0.0.8"]
                  [lein-try "0.4.3"]
                  [venantius/ultra "0.2.0"]]
        :ultra {:color-scheme :solarized_dark}}}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM