我正在学习clojure并且已经完成了作业。
我需要自动编译并构建生成的类的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 :(得分:1)
您需要1.编译代码然后2.创建一个包含已编译代码的JAR文件。
Clojure的compile
函数编译代码并将编译后的类文件(可以有多个)放在*compile-path*
指定的目录下。
您需要使用JarOutputStream(以及可选的Manifest)创建JAR文件,并将*compile-path*
下的所有文件写入JAR。您必须按摩路径,以便将target/repl/classes/clojure/sqe/examples.class
这样的文件作为clojure/seq/examples.class
放入JAR。
lein jar
命令或多或少地执行此操作,因此您可能需要查看其源代码以获取详细信息:https://github.com/technomancy/leiningen/blob/master/src/leiningen/jar.clj
答案 1 :(得分:0)
为什么不使用Leiningen?这是进行Clojure开发的事实上的事实。您可以做很多事情,例如编译Clojure源代码,编译Java源代码,运行单元测试,从porject.clj生成POM文件,当然还有生成JAR文件。
lein jar
将所有项目的文件打包成一个jar文件。 莱因uberjar
将项目文件和所有依赖项打包到jar文件中。