需要为编译的clojure类创建jar文件 [英] Need to create jar file for the compiled clojure classes
问题描述
我正在学习clojure,已经有一个赋值。
我需要自动编译和生成的类的jar。
在clojure代码中,我需要编译另一个clojure代码,编写代码来生成类的jar。
这是我的例子。
even_test.clj
(ns clojure.sqe.examples)
(defn pair-test [test-fn n1 n2]
(if(test-fn n1 n2)sucessfailed))
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 - 将代码写入
;为编译的类或类文件夹构建jar
;将此jar上传到服务。
您需要1.编译代码,然后2 。创建一个包含编译代码的JAR文件。
Clojure的 compile
函数编译代码并将编译的类文件(可以有多个)放在您将需要使用创建一个JAR文件。 * compile-path * JarOutputStream
(以及可选的 Manifest ),然后将所有文件写入 * 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
I am learning clojure and already got an assignment.
I need to automate compile and build jar of the classes generated.
Within the clojure code, I need to compile another clojure code, write code to build the jar of the classes generated.
Here is my example.
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 .
You need to 1. compile the code and then 2. create a JAR file containing the compiled code.
Clojure's compile
function compiles code and puts the compiled class files (there can be more than one) under the directory specified by *compile-path*
.
You will need to create a JAR file using JarOutputStream (and optionally a Manifest), and write all the files under *compile-path*
into the JAR. You will have to massage the paths so that a file like target/repl/classes/clojure/sqe/examples.class
is put into the JAR as clojure/seq/examples.class
.
The lein jar
command more or less does this, so you might want to look at its source code for details: https://github.com/technomancy/leiningen/blob/master/src/leiningen/jar.clj
这篇关于需要为编译的clojure类创建jar文件的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!