是否可以在不进入REPL的情况下编译clojure源代码?如果有一个大项目那么就不可能手动编译每个程序。然后制作它的jar文件,就像我希望通过 make 软件中的一些指令编译和获取类文件一样?
答案 0 :(得分:6)
为了理解这些系统中有多少工作在下面,这里有一些最简单的代码来编译没有repl的代码。
假设您有一些类生成代码:
hello.clj:
(ns hello
(:gen-class
:methods [[sayHi [] String]]))
(defn -sayHi [this]
(println "hello world"))
你可以用clojure代码构建你的“makefile”
compile.clj:
(set! *compile-path* "./")
(compile 'hello)
然后你只需将你的代码称为脚本。
$ java -cp ~/dj/lib/clojure.jar:./ clojure.main compile.clj
$ ls
compile.clj hello.clj hello$loading__4505__auto__.class
hello.class hello__init.class hello$_sayHi.class
现在您的代码已经编译,您可以像任何其他类文件一样访问它:
$ java -cp ~/dj/lib/clojure.jar:./ clojure.main
Clojure 1.3.0
user=> (import 'hello)
hello
user=> (.sayHi (hello.))
"hello world"
user=>
答案 1 :(得分:3)
是的 - 您当然可以在不使用REPL的情况下编译和运行Clojure代码。
执行此操作的一些选项:
答案 2 :(得分:2)
我有一个使用多种语言的大项目,并使用make作为启动所有其他组件的粘合剂,这非常有效。您可以使用make maven或leiningen而不是使用make来重新发明它们。
如果您正在寻找leiningen的替代品,因为它不适合您,或者您只是想使用其他东西,那么您可能会喜欢Clojure Maven plugin
就我个人而言,我不能对Leiningen说得太高,这是我个人的选择,尽管互联网上有很多人,值得探索其他选择。