Clojure使用contrib库

Clojure的contrib库是社区贡献的辅助工具库, 没有包含在Clojure核心当中. 最佳的方法应该是从GitHub上克隆代码并用Maven来构建这些附加的库.

构建contrib库

获取GitHub代码

git clone https://github.com/clojure/clojure-contrib.git

然后运行如下的Maven命令来构建jar包

mvn -Dmaven.test.skip=true assembly:assembly

最好跳过测试, 因为很费时间.

设置classpath

构建出来后, 必须将所有的jar添加到classpath, 因为这些包之间有依赖关系. 方法是先将所有的jar拷贝到一个 目录下, 然后用通配符添加所有这些包.

set CLOJURE_JAR="%CLOJURE_DIR%/modules/*;%CLOJURE_DIR%\clojure-%CLOJURE_VERSION%.jar;"
 
java -server -cp .;%CLOJURE_JAR% clojure.main

Windows上面如果使用通配符来指定classpath, 必须用斜线, 反斜线无效. 但是如果直接指定jar文件, 则反斜线没问题. 但是匹配所有子目录的通配符无论哪种斜线似乎都无效.

调用contrib库的函数

例如accumulators命名空间中的sum函数

 
 
=> (clojure.contrib.accumulators/add-items  [34 ] [3 4 4  5 ])
[34 3 4 4 5]
 
=> (ns my.ns (:require clojure.contrib.accumulators))
=> (clojure.contrib.accumulators/sum [ 34 ])
(sum [34])