Is it possible to compile clojure source without going into REPL? If a big project is there then it is not possible to compile each program manually & then make jar file of it, like if i wish to compile and get class files by some set of instructions in make software?
For the sake of understanding how many of these systems work underneath, here is some bare minimum code to compile code without a repl.
Say you have some class generating code:
hello.clj:
(ns hello
(:gen-class
:methods [[sayHi [] String]]))
(defn -sayHi [this]
(println "hello world"))
You can build your "makefile" out of clojure code
compile.clj:
(set! *compile-path* "./")
(compile 'hello)
Then you just call your code as a script.
$ 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
Now your code is compiled and you can access it like any other class file:
$ java -cp ~/dj/lib/clojure.jar:./ clojure.main
Clojure 1.3.0
user=> (import 'hello)
hello
user=> (.sayHi (hello.))
"hello world"
user=>
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With