lein repl以错误的命名空间开始

Jos*_*ver 7 clojure leiningen

TLDR;

lein repl在命名空间开始于定义:mainproject.clj,而不是user如所期望.

细节

我有一个Leiningen项目,它在uberjar中作为命令行应用程序部署,所以我可以像这样运行它:

java -jar my-app-1.0-standalone.jar --some --args
Run Code Online (Sandbox Code Playgroud)

我还有一个dev/user.clj给我一个很好的REPL环境,如这里所述.

project.clj看起来像这样:

(defproject my-app "1.0"
  :main my-app.cli
  :aot [my-app.cli]

  :profiles {:dev {:source-paths ["src" "dev"]}})
Run Code Online (Sandbox Code Playgroud)

当我lein repl从命令行或M-x cider-jack-in从Emacs 启动我的REPL时,我在my-app.cli命名空间中,而不是user.

如果我:main my-app.cli从中移除project.clj,我的REPL user就像我期望的那样在命名空间中启动,但显然这会破坏我的超级明星.

有任何想法吗?

Dan*_*ero 5

当lein repl任务运行时,它将按优先顺序查找要切换到的ns:

  1. :repl-options的:init-ns中指定的ns
  2. ns指定:main
  3. 用户ns

对于您的情况,请尝试添加:

:repl-options {:init-ns user}
Run Code Online (Sandbox Code Playgroud)

到您的project.clj