如何升级leiningen的nrepl版本?
我使用leiningen
和emacs
+ cider
进行clojure开发。 前几天,当我通过emacs软件包pipe理器升级cider
后,当我运行Mx cider-connect
或Mx cider-jack-in
时,我收到以下警告消息。
; CIDER 0.9.0snapshot (package: 20150222.137) (Java 1.8.0_31, Clojure 1.6.0, nREPL 0.2.6) WARNING: CIDER requires nREPL 0.2.7 to work properly user>
警告信息清楚地表明,我必须将nrepl升级到0.2.7,但是,我不知道如何。
我通过brew
安装了leiningen
,它使用nrepl 0.2.6
。
$ lein repl nREPL server started on port 53218 on host 127.0.0.1 - nrepl://127.0.0.1:53218 REPL-y 0.3.5, nREPL 0.2.6 Clojure 1.6.0 Java HotSpot(TM) 64-Bit Server VM 1.8.0_31-b13 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=>
Leiningen简介的内容是:
{:user {:plugins [[cider/cider-nrepl "0.9.0-SNAPSHOT"]]}}
问题:如何升级leiningen使用的nrepl的版本?
我刚刚遇到了这个问题,我通过将新版本的tools.nrepl
到profiles.clj
来明确依赖它,从而解决了这个问题。 我~/.lein/profiles.clj
:
{:repl {:plugins [[cider/cider-nrepl "0.9.0-SNAPSHOT"]] :dependencies [[org.clojure/tools.nrepl "0.2.7"]]}}
不知道这是否是最好的或正式的方式来做到这一点。
在@ matthew-moss之上的附加注释:只有在clojure项目中运行lein repl
,才会使用tools.nrepl依赖关系行。 如果您只是从主目录运行lein repl
,则最终将使用编译为leiningen的tools.nrepl版本。 不知道为什么。
希望节省一些时间。
lein有一个最简单的升级命令
lein upgrade
如果您使用包pipe理器安装了leiningen,则可能需要执行下面的操作(例如OS X,Linux发行版都有自己的包pipe理器):
brew unlink leiningen brew update brew install leiningen
作为被接受的答案的补充:在用户configuration文件中添加对0.2.7的依赖关系.clj在几天前为我工作,但是突然之间我又回到了0.2.6的警告。 问“lein deps:树”有这条线:
[org.clojure/tools.nrepl "0.2.7" :scope "test" :exclusions [[org.clojure/clojure]]]
这给了我一个线索,可能lein-test-refresh插件(在相同的profiles.clj中定义)在这里引起一些混淆。 阅读更多关于configuration文件的知识^:replace提示。 这个依赖关系现在适用于我:
^:replace [org.clojure/tools.nrepl "0.2.7"]