;; project.clj
(defproject bar "1.0.0-SNAPSHOT"
:description "FIXME: write description"
:dependencies [[org.clojure/clojure "1.2.1"]]
:main bar.core)
:mainでnamespaceを指定しておくと$ lein run -m bar.core
みたいにイチイチ指定しなくていい。
;; src/bar/core.clj
(ns bar.core
(:gen-class))
(defn -main []
(println "unk"))
スタンドアローンで実行できるjarを作るには:gen-class
の指定と-main関数が必要。
まずそのまま実行してみる。
% lein run
Picked up _JAVA_OPTIONS: -Dfile.encoding=UTF-8
Picked up _JAVA_OPTIONS: -Dfile.encoding=UTF-8
unk
(このJAVAのOPTIONがイチイチ表示されるの何とかならないかな・・・)
% lein uberjar
ドイツ人の@mreinschさんによるとuberとはbeyondとかaboveの意味だそうです。(それでもよく分からないけど)
bar-1.0.0-SNAPSHOT-standalone.jarとbar-1.0.0-SNAPSHOT.jarが出来ていました。jar tvfで中身を見てみると、無印の方はこのプロジェクトのモノだけ。-standaloneの方は依存jar(clojure自身を含む)が全部入ったやつみたいです。
% java -jar bar-1.0.0-SNAPSHOT-standalone.jar
Picked up _JAVA_OPTIONS: -Dfile.encoding=UTF-8
unk
OMG!
Windows XPに持って行って実行してみると・・・
(^q^)