运行clojure程序的典型方式

时间:2012-06-05 16:53:16

标签: clojure

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

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

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

7 个答案:

答案 0 :(得分:25)

因为你直接发现了莱因根,所以你走在了正确的轨道上。这不是一个愚蠢的问题,因为回答它会帮助其他人获得更好的谷歌搜索结果。

  • 每个clojure程序应该是一个单独的leiningen项目,因此您为每个项目运行lein new project-name

  • 构建Clojure项目的结果与Java项目相同,例如,使用java -jar myproject-standalone.jar运行的JAR文件

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

  • 当我在工作中运行clojure程序时,我们只需从git中检查它们,然后在目录中调用lein run(实际上Jenkins会这样做)。

答案 1 :(得分:9)

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

(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)

现在我的项目可以使用:

运行
lein run

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

答案 2 :(得分:6)

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

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

答案 3 :(得分:6)

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

(println "Hello!")
像这样:

clojure hello.clj

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

java -jar <path-to-clojure-jar>/clojure.jar hello.clj

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

答案 4 :(得分:2)

我的bash clojure脚本:

#!/bin/sh

export CLOJURE_EXT=$HOME/.clojure
export CLOJURE_OPTS="-Xmx1g -server"

LIBS=$(ls -1 $CLOJURE_EXT/* 2> /dev/null)
export CLASSPATH=.:$CLOJURE_EXT:$CLASSPATH:"$(echo "$LIBS" | tr \\n :)"

JAVA=${CLOJURE_JAVA:-java}
OPTS=${CLOJURE_OPTS:-}
MAIN=${CLOJURE_MAIN:-clojure.main}

breakchars="(){}[],^%$#@\"\";:''|\\"

if [ $# -eq 0 ]; then
    exec rlwrap --remember -c -b $breakchars \
        -f $HOME/.clj_completions \
        --history-filename=$HOME/.clj_history --histsize=1000000 \
        $JAVA $OPTS $MAIN -i $HOME/.clojure.clj --repl
else
    exec $JAVA $OPTS $MAIN "$@"
fi

将它们保存到$ HOME / bin / clojure,chmod + x $ HOME / bin / clojure, 将clojure.jar和第三方库复制到$ HOME / .clojure中, 你可以运行clojure your_program.clj作为python pyfile.py

答案 5 :(得分:0)

作为更新,处理clojure程序的一种简单方法是使用leiningen

如果您想运行小型clojure脚本,请使用lein-exec

答案 6 :(得分:0)

.bashrc文件或同等文件中创建别名:

alias clojure="java -jar path/to/clojure-x.x.x.jar"

然后您可以在终端中运行clojure my-file.clj