Thanks for the explanation, Alex. Knowing that, I found a way to load multiple user.clj
files:
-
~/.clojure/deps.edn
:
{:aliases {:user {:extra-paths ["/path/to/.clojure"]}}}
-
~/.clojure/user.clj
:
(defn- static-classpath-dirs
[]
(mapv #(.getCanonicalPath %) (classpath/classpath-directories)))
(defn user-clj-paths
[]
(->> (static-classpath-dirs)
(map #(io/file % "user.clj"))
(filter #(.exists %))))
(defn load-user!
[f]
(try
(prn (str "Loading " f))
(load-file (str f))
(catch Exception e
(binding [*out* *err*]
(printf "WARNING: Exception while loading %s\n" f)
(prn e)))))
(defn load-all-user!
[]
(let [paths (user-clj-paths)]
(prn (str "Load " (first paths)))
(doall
(map load-user! (rest paths)))))
(load-all-user!)
Now I can start clojure from the command line with clj -A:user:other-alias
. My ~/.clojure/user.clj
is the first in the classpath, and will take care of loading all the other user.clj
on the classpath