38

これは、ライニンゲン内にスタンドアロンの Clojure パッケージはありますか? に続く 2 番目の質問です。

たとえば、ファイルhello_world.cljがあり、次を使用して実行できます

java -cp clojure.jar clojure.main hello_world.clj.

leinには既にClojureが含まれているため(直接実行できるためlein repl)、次のような同じことを行う方法はありますか?

lein script hello_world.cljレインで?

4

4 に答える 4

27

lein-execプラグインを使用します。readme.md の例 (「lein2」ではなく「lein」で更新)

cat foo.clj | lein exec
lein exec -e '(println "foo" (+ 20 30))'
lein exec -ep "(use 'foo.bar) (pprint (map baz (range 200)))"
lein exec -p script/run-server.clj -p 8088
lein exec ~/common/delete-logs.clj
于 2012-08-22T00:45:48.150 に答える
8

leiningen は、すべての依存関係を備えた「uberjar」を作成できます....

lein uberjar

ターゲット サブディレクトリに jar が作成されます。jar には、 にリストされているすべての依存関係が含まれているproject.cljため、コードを呼び出すための複雑なクラスパスの作成について心配する必要はありません。

この uberjar は、通常の方法で Java クラスパスの単一のエントリとして参照するか、project.clj実行可能な jar として呼び出しでメインクラスを指定できます。

たとえば、次のproject.cljようにします。

(defproject clj-scratch "1.0.0-SNAPSHOT"
 :description "FIXME: write description"
 :dependencies [[org.clojure/clojure "1.4.0"]                     
 :main clj-scratch.core)

-mainで関数を呼び出しますclj-scratch.core namespace

あなたが実行した場合:

java -jar target/clj-scratch-1.0.0-SNAPSHOT-standalone.jar
于 2012-08-21T23:12:57.150 に答える