如何使用Leiningen运行代码?

sja*_*jac 27 clojure

我正在使用Leiningen(第一次)管理我的写作应用程序.到目前为止,我已经定义了项目依赖项,在项目lib目录中安装了deps,并且我已经定义了一个函数.当我lein repl从项目根运行然后调用我定义的函数时,我得到了错误unable to resolve symbol.任何人都知道我做错了什么以及如何通过Leiningen正确运行我的应用程序?谢谢.

Art*_*ldt 30

从leiningen repl中,您将不得不切换到使用in-ns宏定义函数的命名空间.

(in-ns 'myproject.core)
Run Code Online (Sandbox Code Playgroud)

然后该函数应该可用,
您也use可以从repl中将该命名空间包含在默认(用户)命名空间中.

(use 'myproject.core)
Run Code Online (Sandbox Code Playgroud)

之后,你可能要考虑寻找到的lein run,lein uberjarlein jarleiningen任务.


Sco*_*ott 16

在我的项目中,对于包含由此定义的命名空间的core.clj文件:

(ns my-project.core)
Run Code Online (Sandbox Code Playgroud)

...我在project.clj中设置:mainLeiningen defproject地图中的键:

(defproject my-project "1.0.0-SNAPSHOT"
  :description "My project description"
  :dependencies [[org.clojure/clojure "1.2.1"]]
  :main my-project.core)
Run Code Online (Sandbox Code Playgroud)

所以当我运行时lein repl,我的核心命名空间会自动加载,我看到了:

mac:my-project scott$ lein repl
REPL started; server listening on localhost:31515.
my-project.core=> 
Run Code Online (Sandbox Code Playgroud)

  • 我不确定你是否在询问Leiningen是否会自动查找文件更改并将其加载到您的实时REPL中,但它不会这样做.但是,您可以执行以下命令来加载最新代码,而不是重新启动REPL:`(使用:reload-all'my-project.core) (7认同)