2014-02-24 44 views
1

我正在学习clojure并已获得任务。需要为已编译的clojure类创建jar文件

我需要自动编译和生成生成的类的jar。

在clojure代码中,我需要编译另一个clojure代码,编写代码来构建生成的类的jar。

这是我的例子。

even_test.clj

(ns clojure.sqe.examples) 

(defn pair-test [test-fn n1 n2] 
(if (test-fn n1 n2) "sucess" "failed")) 

(println (pair-test #(even? (+ %1 %2)) 3 4)) ; -> pass 

compile_test.clj

(ns clojure.sqe.examples 
    (:use clojure.test) 
    (:require [simple-check.core  :as sc]) 
) 

(compile 'clojure.sqe.examples.even_test) 
;(println *compile-path*) => classes 

;TO-DO - Write code to 
;Build the jar for the compiled classes or from classes folder 

; upload this jar to a service . 
+0

同上使用leiningen。它简化了您的开发过程,它是一个非常好的工具。 – octopusgrabbus

回答

1

您需要1.编译代码,然后2.创建一个包含编译代码的JAR文件。

Clojure的compile函数编译代码,并将编译后的类文件(可以有多个)放在*compile-path*指定的目录下。

您将需要使用JarOutputStream(和可选的Manifest)创建JAR文件,并将所有文件写入*compile-path*到JAR中。您将不得不按照路径,以便像target/repl/classes/clojure/sqe/examples.class这样的文件被放入JAR中作为clojure/seq/examples.class

lein jar命令或多或少地做到这一点,所以你可能想看看它的源代码的详细信息:https://github.com/technomancy/leiningen/blob/master/src/leiningen/jar.clj

0

为什么你不使用Leiningen?这是Clojure开发的事实。你可以做很多事情,比如编译Clojure源代码,编译Java源代码,运行单元测试,从porject.clj生成POM文件,当然还有生成JAR文件。

雷音罐子
封装了所有项目的文件转换成一个jar文件。

lein uberjar
将项目文件和所有依赖项打包到jar文件中。

+0

更新了我的文章。我必须编写一个代码来在clojure代码compile_test.clj中构建jar –

相关问题