需要为编译的clojure类创建jar文件 [英] Need to create jar file for the compiled clojure classes

查看:157
本文介绍了需要为编译的clojure类创建jar文件的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在学习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'c​​lojure.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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆