运行clojure程序的典型方式

19 clojure

我是Clojure的新手,对于如何运行Clojure程序感到很困惑.

我的第一个问题是每个Clojure程序是否都是Leiningen程序包?如果我想写,我首先要创建一个新的Leiningen项目吗?有没有运行类似于Python的Clojure程序(即python pyfile.py)

我意识到这可能是一个愚蠢的问题,但我一直对此感到困惑,而我所经历的几本书/教程似乎并未正确回答这个问题.到目前为止,我一直在REPL中运行Clojure代码.

Art*_*ldt 25

既然你直接找到了莱因根,那你就走在了正确的轨道上.这不是一个愚蠢的问题,因为回答它会帮助其他人获得更好的谷歌搜索结果.

  • 每个clojure程序应该是一个单独的leiningen项目,所以你lein new project-name为每个项目运行.

  • 建设项目的Clojure的结果是一样的Java项目,是它和运行一个JAR文件java -jar myproject-standalone.jar,例如

  • leiningen可以为您构建一个包装器shell脚本,生成一个只调用java -jar的.sh文件

  • 当我在生产中运行clojure程序时,我们只需从git中检查它们然后调用lein run目录(实际上Jenkins就是这样做的).

  • 将`:uberjar-name"sample-standalone.jar"添加到你的project.clj文件中.请参阅示例项目:https://github.com/technomancy/leiningen/blob/master/sample.project.clj#L382 (2认同)

Pau*_*ald 9

添加到Arthur Ulfeldt的优秀答案的一件事是lein为你创建了一个project.clj,你的主要功能(程序执行的功能)可以在那里定义.默认情况下,Leiningen在名为core.cljFor 的文件中创建主函数:

(defproject music "1.0.0-SNAPSHOT"
  :description "A workspace for my music experiments"
  :dependencies [
    [org.clojure/clojure "1.3.0"]
    [org.clojure/math.combinatorics "0.0.1"]
  ]
  :main music.core)
Run Code Online (Sandbox Code Playgroud)

现在我的项目可以使用:

lein run
Run Code Online (Sandbox Code Playgroud)

并将运行music.core中的主要功能.


Sha*_*mar 6

可能最简单的方法是使用lein-execClojure脚本运行:

http://charsequence.blogspot.in/2012/04/scripting-clojure-with-leiningen-2.html


djh*_*987 6

回答部分问题:"有没有可以运行类似于Python的Clojure程序?" 你真的可以像这样运行一个clojure脚本(调用hello.clj):

(println "Hello!")
Run Code Online (Sandbox Code Playgroud)

像这样:

clojure hello.clj
Run Code Online (Sandbox Code Playgroud)

编辑:以下应适用于所有系统:

java -jar <path-to-clojure-jar>/clojure.jar hello.clj
Run Code Online (Sandbox Code Playgroud)

在我的系统上,clojure.jar文件位于/usr/share/clojure/clojure.jar中.启动clojure的linux命令只是运行一个像上面的命令一样的命令.