Как обновить версию leiningen nrepl?

Я использую leiningen и emacs + cider для разработки clojure. Несколько дней назад, после обновления cider через диспетчер пакетов emacs, я получаю следующее предупреждающее сообщение, когда я запускаю M-x cider-connect или M-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"]]}}

Вопрос:: Как обновить версию nrepl, используемую leiningen?

Ответ 1

У меня была эта проблема, и я решил ее, добавив явную зависимость от более новой версии tools.nrepl до profiles.clj. Мой ~/.lein/profiles.clj:

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

Не знаю, лучший или официальный способ сделать это.

Ответ 2

дополнительное примечание в верхней части @matthew-moss's: строка зависимости tools.nrepl используется, только если вы запустите lein repl из проекта clojure. если вы просто запустите lein repl из своего домашнего каталога, например, вы в конечном итоге используете версию tools.nrepl, которая скомпилирована в leiningen. Не знаю, почему.

Надеюсь, что кто-то сохранит время.

Ответ 3

lein имеет команду обновления, поэтому в простейшем случае

lein upgrade

Если вы установили leiningen с менеджером пакетов, вам может понадобиться сделать что-то вроде ниже (пример для OS X, дистрибутивы Linux имеют свои замечательные менеджеры пакетов):

brew unlink leiningen
brew update
brew install leiningen

Ответ 4

В качестве дополнения к принятому ответу: добавив зависимость от 0.2.7 в профилях пользователей .clj работал у меня несколько дней назад, но потом я снова вернулся к предупреждению 0.2.6. В запросе "lein deps: tree" была эта строка:

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

Что дало мне понять, что, вероятно, плагин lein-test-refresh (определенный в тех же profile.clj) вызывает некоторую путаницу здесь. Еще кое-что о profiles Я узнал о подсказке ^: replace. Эта строка в зависимостях теперь работает для меня:

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