请在2024 Clojure状态调查!中分享您的想法。

欢迎!请查看关于页面以获取更多关于如何使用本网站的信息。

+1投票
Clojure CLI

使用Leiningen,我可以使用以下命令连接到nrepl服务器:

lein repl :connect

它将从.nrepl-port文件中获取端口并将其带到REPL提示符。

使用clojure,我假设我需要注入一些nREPL客户端依赖项,并运行客户端等,因此不期望它如此简洁,但仍然,我应该怎么做?

2 答案

+1投票

已选择
 
最佳答案

请尝试以下

clj -Sdeps '{:deps {nrepl/nrepl {:mvn/version "0.5.3"}}}' -m nrepl.cmdline -c --host 127.0.0.1 --port PORT

您可以从.nrepl-port或从Leiningen启动nREPL服务器时的输出中获取端口号。


编辑
谢谢。使用与我在答案中相同的混合方式,我得到了相当于 `lein repl :connect` 的效果。

    clj -Sdeps '{:deps {nrepl/nrepl {:mvn/version "1.0.0"}}}' -m nrepl.cmdline -c --host 127.0.0.1 --port `< .nrepl-port`

这与 reply 和 lein(使用 reply)之间的一个区别是,它们把我放进了我的项目的默认命名空间,而这一种则放进 `user` 命名空间。有点麻烦。我主要很好奇 reply 是如何找到我的项目的默认命名空间的...
0

我得到的结果与使用 reply 和这个 shell/clojure 混合方式最接近。

clojure -Sdeps '{:deps {reply/reply {:mvn/version "0.5.1"}}}' -M -m reply.main --attach `< .nrepl-port` 
此外,在 @sanel 的答案基础上,并利用我的项目指定了 `nrepl` 依赖关系

    clj -M -m nrepl.cmdline -c --port `< .nrepl-port`
...