Clojure:在使用Cider时,某些项目无法遵守profiles.clj文件

3
我面临的问题与最后一条评论中提到的问题相同:https://dev59.com/u18e5IYBdhLWcg3wwMlW#25401281(由Yu Shen提供)。

我不知道为什么在~/.lein/profiles.clj中添加:plugins [[cider/cider-nrepl“0.7.0”]]无效。但是在我的项目.project.clj中添加相同的表达式::plugins[[cider/cider-nrepl“0.7.0”]]按预期工作。

直到现在,我认为我的所有项目都是这样运行的,但今天我发现了一些不同之处。也许是出了什么问题?表现不同的两个项目具有以下结构:

==================== project-1/project.clj (cider不起作用) ====================

(defproject clj "0.1.0-SNAPSHOT"
  :description "Frontend for stox@gryffin"
  :url "http://stox.gryff.in/"
  :dependencies [[selmer "0.6.9"]
                 [clj-time "0.6.0"]
                 [http-kit "2.1.18"]
                 [com.taoensso/timbre "3.2.1"]
                 [noir-exception "0.2.2"]
                 [im.chit/cronj "1.4.3"]
                 [environ "1.0.0"]
                 [org.clojure/tools.nrepl "0.2.3"]
                 [clojure-complete "0.2.4"]
                 [org.clojure/clojure "1.6.0"]
                 [org.clojure/data.json "0.2.5"]
                 [ring-server "0.3.1"]
                 [com.taoensso/tower "2.0.2"]
                 [com.novemberain/monger "2.0.0"]
                 [org.clojure/math.numeric-tower "0.0.4"]
                 [lib-noir "0.8.4"]]
  :jvm-opts ["-Xmx512m" "-Xms128m"]
  :plugins [[lein-environ "1.0.0"]]
  :main clj.core)

==================== 项目-2 / project.clj (cider工作) ====================

这是一个Clojure项目的配置文件,它使用了Cider插件来提供开发环境。
(defproject project-euler "0.1.0-SNAPSHOT"
  :description "Solve problems on project-euler website"
  :url "http://projecteuler.net/problems"
  :license {:name "Eclipse Public License"
            :url "http://www.eclipse.org/legal/epl-v10.html"}
  :dependencies [[org.clojure/clojure "1.6.0"]
                 [org.clojure/core.memoize "0.5.6"]
                 [expectations "2.0.13"]
                 [org.clojure/math.numeric-tower "0.0.4"]
                 [org.clojure/math.combinatorics "0.0.8"]
                 [criterium "0.4.3"]
                 [org.clojure/tools.trace "0.7.8"]
                 [com.taoensso/timbre "3.2.1"]]
  :plugins [[lein-autoexpect "1.0"]])

==================== ~/.lein/profiles.clj ====================

这是Leiningen的一个配置文件,可以定义项目依赖项和插件。你可以在其中添加或删除需要使用的内容。

{:user {:plugins [[cider/cider-nrepl "0.9.0-SNAPSHOT"]]}}

编辑: 1. 在项目-1的Cider中看到的错误消息

; CIDER 0.9.0alpha (package: 20150114.512) (Java 1.7.0_55, Clojure 1.6.0, nREPL 0.2.6)
WARNING: The following required nREPL ops are not supported: 
apropos classpath complete eldoc info inspect-start inspect-refresh inspect-pop inspect-push inspect-reset macroexpand ns-list ns-vars resource stacktrace toggle-trace-var toggle-trace-ns undef
Please, install (or update) cider-nrepl 0.9.0-SNAPSHOT and restart CIDER
WARNING: CIDER's version (0.9.0-snapshot) does not match cider-nrepl's version (not installed)
  1. (snipped) lein deps :tree

    警告 [cider/cider-nrepl "0.9.0-20150118.121230-2"] [cljs-tooling "0.1.3" :排除 [[org.clojure/clojure]]] [compliment "0.2.1-20141130.115631-1" :排除 [[org.clojure/clojure]]] [defprecated "0.1.1"] [org.clojure/java.classpath "0.2.0" :排除 [[org.clojure/clojure]]] [org.clojure/tools.trace "0.7.8" :排除 [[org.clojure/clojure]]] [org.tcrawley/dynapath "0.2.3" :排除 [[org.clojure/clojure]]]

该代码段显示了一个Clojure项目的依赖树,其中列出了所有的依赖项。在这些依赖项中,有一些被明确地排除,因为它们与其他依赖项发生了冲突。

你尝试过使用 lein deps :tree 吗?另外,我已经尝试使用 Cider 的发布版本来查看是否可以重现该问题。最后,你如何知道 profiles.clj 没有被执行? - Phil Lord
你使用的是哪个版本的lein?你更新了emacs包吗(假设你使用的是melba)?重要的是确保emacs sider包和lein cider nrepl版本同步。我只在它们不同步时才看到过那个消息。 - Tim X
@TimX:1. "Leiningen 2.5.0 运行在 Java 1.7.0_55 OpenJDK 64-Bit Server VM 上"。2. cider 的版本为 "cider-20150114.512",对应的是 "cider-nrepl 0.9.0-SNAPSHOT"。 - Pradnyesh Sawant
有一个新的Klein版本2.5.1,就在几天前发布。建议您首先更新到该版本。不确定如何进一步解决您的问题。我正在Linux盒子上使用相同的版本,没有任何问题。只是注意到有一个新的cider-20150126.1253。我能建议的就是从最小配置开始,逐步添加回来东西,在每次更改后进行检查,并查看是否有助于缩小原因。 - Tim X
我意识到我的问题在于我错误地将Windows中的profiles.clj目录误认为是~/.lein。实际上,它位于C:\Users<user_id_in_windows>.lein\profiles.clj。一旦我将自定义内容放在正确的目录下,它就按预期工作了。不再有问题。 - Yu Shen
2个回答

1
$ lein version
Leiningen 2.5.1 on Java 1.8.0_25 OpenJDK 64-Bit Server VM

我的~/.lein/profiles.clj文件:

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

https://dev59.com/lW_Xa4cB1Zd3GeqPxR7t#15172955所建议的那样:

在空目录中运行lein repl

$ lein repl
nREPL server started on port 40595 on host 127.0.0.1 - nrepl://127.0.0.1:40595
REPL-y 0.3.5, nREPL 0.2.6
Clojure 1.6.0
OpenJDK 64-Bit Server VM 1.8.0_25-b18
Docs: (doc function-name-here)

在使用lein new app; cd app创建项目后

$ lein repl
Retrieving org/clojure/clojure/1.6.0/clojure-1.6.0.jar from central
nREPL server started on port 55421 on host 127.0.0.1 - nrepl://127.0.0.1:55421
REPL-y 0.3.5, nREPL 0.2.7
Clojure 1.6.0

我倾向于认为这可能是Leiningen中某个bug的表现,但我不确定...(为什么它在下载Clojure?)


0

2021年5月更新

将您的~/.lein/profiles.clj文件更改为以下内容:

{:user {:plugins [[cider/cider-nrepl "0.26.0-SNAPSHOT"]]
        :dependencies [[nrepl "0.8.3"]]}}

nrepl 的依赖规范是从 cider-nrepl Clojars 页面 引用的。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接