2012-06-05 4 views
19

私はClojureが初めてで、Clojureプログラムをどのように実行すべきかについて本当に混乱しています。clojureプログラムを実行する典型的な方法

私の最初の質問は、すべてのClojureプログラムがLeiningenパッケージであるかどうかです。私が書いたければ、私は新しいLeiningenプロジェクトを作成することから始めますか? Pythonに似たClojureプログラムを実行するには(python pyfile.py

私はこれが愚かな質問かもしれないことに気付きましたが、私はこれをしばらくは混乱させてしまいました。この質問に適切に答えているようです。今まで私はREPLのClojureコードを実行していました。

答えて

25

ライニングが真っ直ぐであることがわかっているので、あなたは正しい軌道に乗っています。それは他の人がより良いgoogleの結果を得るのに役立つので、それは愚かな質問ではありません。

  • あなたがそれらのそれぞれのlein new project-nameを実行するように、各Clojureのプログラムは、個別のLeiningenをプロジェクトにする必要があります。

  • Clojureのプロジェクトをビルドした結果は、.SHファイルを生成するJavaプロジェクト、例えばjava -jar myproject-standalone.jarとあなたのためのラッパーシェルスクリプトを作成することができます

  • Leiningenを実行ますJARファイルと同じです

  • 私が職場でプロダクションでclojureプログラムを実行するときには、gitをチェックアウトしてからlein run(実際にはJenkinsがこれを行います)を呼び出します。アーサーUlfeldtの優れた答えに追加する

+0

'.jar'ターゲットファイルのバージョン番号をどのように抑制しますか? – nekonari

+2

':uberjar-name" sample-standalone.jar "をproject.cljファイルに追加します。サンプルプロジェクトを参照してください:https://github.com/technomancy/leiningen/blob/master/sample.project.clj#L382 –

9

一つは、レインがあなたのために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のmain関数が実行されます。

2

私のbash Clojureのスクリプト:

$ HOME/binに/ Clojureは、chmodの+ Xの$ HOME/binに/ Clojureは、 コピーclojure.jarと$ HOMEにサードパーティのライブラリに保存
#!/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 "[email protected]" 
fi 

/.clojure、 あなたはおそらく最も簡単な方法は、Clojureのスクリプトを実行するlein-execを用いることであろうPythonのpyfile.py

6

としてclojure your_program.cljを実行することができます。

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

+1

これは本当にこの質問の回答に追加されています。質問の一部は「方法はありますか? Pythonに似たClojureプログラムを実行するには?この答えはどのように私たちに示しています。時々、私はスクリプトを実行したいだけです。 – djhaskin987

5

質問の一部に答えるには:「Pythonに似たClojureプログラムを実行しますか?「あなたは本当にちょうど(hello.cljと呼ばれる)は、このようなClojureのスクリプトを実行することができ :このような

(println "Hello!") 

clojure hello.clj 

EDIT:次はすべてシステム上で動作するはずです:

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

私のシステムでは、clojure.jarファイルは/usr/share/clojure/clojure.jarにあります。linuxコマンドclojureを消すためには、上記のようなコマンドを単に実行します。アップデートとして

+0

これはすべてのシステムで機能しますか? Ubuntuのaptitudeからインストールすると 'clojure'コマンドが出ることは分かっていますが、これは他のインストールでも当てはまりません。ここで確認して更新すると良いでしょう。 – metasoarous

+0

これを更新して、すべてのシステムで動作するようにしました。 – djhaskin987

0

は、Clojureのプログラムに対処するための簡単な方法は、あなたが小さなClojureのスクリプトを実行したい場合は、あなたの.bashrcファイル、または同等にエイリアスを作成しlein-exec

0

を使用し、leiningen

を使用することです:

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

次に、あなたのターミナルでclojure my-file.cljを実行することができます。