如何升级leiningen的nrepl版本?

我使用leiningenemacs + cider进行clojure开发。 前几天,当我通过emacs软件包pipe理器升级cider后,当我运行Mx cider-connectMx 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.nreplprofiles.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"]