Let's say you create two projects with Leiningen (side by side in a folder called projects) with lein new ping and lein new pong. Then you implement a little function in ping\src\ping\core.clj:
(defn plus
[x y]
(+ x y))
My question is: How can "import" that plus function in the REPL for the pong project? This does not work:
(require '[ping.core :as ping])
; Execution error (FileNotFoundException) [...]
; Could not locate ping/core__init.class, ping/core.clj or ping/core.cljc on classpath.
I modified the CLASSPATH environment variable (e.g., set CLASSPATH=..\ping\src\ping\core.clj) but, alas, to no avail.
Is it necessary to make a JAR file out of ping to use its functions in pong?
Leiningen has the concept of checkout dependencies, which let you use other "projects" as libraries without them having to be packaged as a .jar first.
deps.edn has this a bit cleaner via :local/root dependencies.
Both options are much more reliable then manually messing with the CLASSPATH env variable. I'm not even sure lein even respects that.