如何升级leiningen的nrepl版本?

时间:2015-02-24 05:25:19

标签: emacs clojure leiningen

我使用leiningenemacs + cider进行clojure开发。几天前,在我通过emacs软件包管理器升级cider后,当我运行M-x cider-connectM-x 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,但是,我不知道如何。

我通过leiningen安装了brew,并使用了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版本?

4 个答案:

答案 0 :(得分:57)

我刚刚遇到这个问题,我通过在tools.nrepl的{​​{1}}的新版本上添加明确的依赖关系解决了这个问题。我的profiles.clj

~/.lein/profiles.clj

不知道这是最好的还是官方的方式,这样做。

答案 1 :(得分:9)

@ matthew-moss上的附加说明:只有在clojure项目中运行lein repl时,才会使用tools.nrepl依赖项。例如,如果你只是从你的主目录运行lein repl,你最终会使用编译成leiningen的tools.nrepl版本。不知道为什么。

希望节省一些时间。

答案 2 :(得分:7)

lein有一个升级命令,所以在最简单的情况下

lein upgrade

如果您使用软件包管理器安装了leiningen,您可能需要执行以下操作(OS X的示例,Linux发行版有自己的精彩软件包管理器):

brew unlink leiningen
brew update
brew install leiningen

答案 3 :(得分:3)

作为对已接受答案的补充:在用户profiles.clj中添加对0.2.7的依赖性几天前为我工作但突然间我又回到0.2.6警告。问“lein deps:tree”有这条线:

[org.clojure/tools.nrepl "0.2.7" :scope "test" :exclusions [[org.clojure/clojure]]]

这给了我一个线索,可能是lein-test-refresh插件(在同一个profiles.clj中定义)引起了一些混乱。阅读更多有关profiles的内容,我了解了^:replace提示。依赖关系中的这一行现在适用于我:

^:replace [org.clojure/tools.nrepl "0.2.7"]