leinigen 与 插件

leinigen 是clojure的项目管理器 类似于maven,抛开它不讲 本身clojure 也可以启动
启动懂clojure 只需要它的jar 即可 使用“java -cp clojure-1.6.0.jar:$CLASSPATH clojure.main”进入repl, *****注意 不加 $CLASSPATH classpath会出错
同样 加入参数“ -m XXX.XX” 就会运行该namespace 下面的 -main函数。

那么lein 又是怎么运行的呢,首先 从官网可以看到 下载下来的只是一个shell文件,也就是所有的lein repl,lein deps 都是先走这个脚本的,然后在运行lein 本身的-main 函数(如下 来自于lein.sh)

export TRAMPOLINE_FILE
"$LEIN_JAVA_CMD" \
"${BOOTCLASSPATH[@]}" \
-Dfile.encoding=UTF-8 \
-Dmaven.wagon.http.ssl.easy=false \
-Dmaven.wagon.rto=10000 \
$LEIN_JVM_OPTS \
-Dleiningen.original.pwd="$ORIGINAL_PWD" \
-Dleiningen.script="$SCRIPT" \
-classpath "$CLASSPATH" \
clojure.main -m leiningen.core.main "$@"

进入 lein -main 函数之后 一切就由lein 来管理了 github 上可以看到 每一个命令 都有其对应的一个clj 文件做处理,并且还支持插件.
如果自己做插件的话 leinigen 根据命名空间来找 插件入口的

(ns leinigen.fly)
(defn fly
"test leinige"
([project]
(println "fly" project))
([project port]
(prinlnt "fly with port" project port)))

并且在project.clj 加入 :eval-in-leiningen true
(如有需求 可以打包上传到clojars 然后 其他项目就可以 :plugins [[XXXXX “XXXX”]] 直接使用了)
命令行直接就可以 输入 lein fly 输出 需要指定的内容了。