2015-02-24 141 views
43

我使用leiningenemacs + cider进行clojure开发。前几天,在我通过emacs软件包管理器升级cider后,当我运行M-x cider-connectM-x cider-jack-in时,收到以下警告消息。如何升级leiningen的nrepl版本?

; 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的版本?

+1

苹果酒会更加与旧版本nREPL但在他们一些微妙和不那么微妙的错误。有人应该真正更新与lein和回复捆绑在一起的nREPL。 – 2015-02-24 06:04:52

+1

似乎nREPL已经在lein的主人更新。 – 2015-02-24 06:57:33

回答

55

我刚刚遇到了这个问题,我通过在tools.nreplprofiles.clj的新版本上添加一个明确的依赖关系来解决它。我~/.lein/profiles.clj

{:repl {:plugins [[cider/cider-nrepl "0.9.0-SNAPSHOT"]] 
     :dependencies [[org.clojure/tools.nrepl "0.2.7"]]}} 

不知道这是否是做到这一点,寿最好的还是官方的方式”。

+3

查看https://github.com/clojure-emacs/cider/issues/970似乎2.7的nRepl prio有一些bug。我认为这个依赖已经在lein master中更新了,但可能还没有发布,所以在后面的版本中添加依赖可能是正确的修复,虽然你可能想在下次更新之后删除那个dep – 2015-02-25 21:37:12

+2

A note ... This for我*提供*依赖是在'profiles.clj'而不是项目的'project.clj'。 – 2015-03-19 17:16:36

+5

有了这个确切的profiles.clj,lein下载了nrepl 0.2.7文件,但仍然启动了nrepl 0.2.6,对我来说。在Windows 7的盒子和OS X上。 – 2015-03-30 04:13:38

3

作为接受答案的补充:在用户配置文件中添加对0.2.7的依赖关系.clj在几天前为我工作,但后来突然又回到了0.2.6的警告。问“雷音DEPS:树”进行了这一行吧:

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

这给了我,可能雷音测试刷新插件(在​​同一profiles.clj定义)在这里造成一些混乱的线索。阅读更多关于profiles我了解了^:替换提示。这条线的依赖,现在对我的作品:

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

上的@马修 - 苔的顶部还有一个提示:如果你从一个Clojure的项目中运行lein repl的tools.nrepl依赖行时才使用。例如,如果您仅从主目录运行lein repl,则最终会使用编译为leiningen的tools.nrepl版本。不知道为什么。

希望节省一些时间。

5

雷音有一个升级命令,以便在

lein upgrade 

如果你的软件包管理器安装leiningen最简单的情况下,你可能需要做一些像下面的(例如,对于OS X,Linux发行版都有自己的精彩的包经理):

brew unlink leiningen 
brew update 
brew install leiningen 
+0

这对我有效。我最近更新了我的操作系统到el.capitan,但没有更新leiningen。所以,苹果酒nRepl开始抱怨。感谢您的帮助。 – plkmthr 2015-11-14 06:37:47