TLDR;
lein repl
根据需要在:main
中的project.clj
定义的名称空间中开始,而不是user
。
详情
我有一个Leiningen项目,它在uberjar中作为命令行应用程序部署,所以我可以像这样运行它:
java -jar my-app-1.0-standalone.jar --some --args
我还有一个dev/user.clj
给我一个很好的REPL环境,described here。
我的project.clj
看起来像这样:
(defproject my-app "1.0"
:main my-app.cli
:aot [my-app.cli]
:profiles {:dev {:source-paths ["src" "dev"]}})
当我从命令行使用lein repl
或从Emacs使用M-x cider-jack-in
启动REPL时,我位于my-app.cli
命名空间,而不是user
。
如果我从:main my-app.cli
删除project.clj
,我的REPL就会在user
命名空间中启动,但是这显然会打破我的超级明星。
有什么想法吗?
答案 0 :(得分:5)
当lein repl任务运行时,它会查找ns以按此优先顺序切换到:
在您的情况下,请尝试添加:
:repl-options {:init-ns user}
到你的project.clj