> I'd like to bundle a collection of (JSON) datafiles with a Clojure
> project source tree so that Clojure functions can reliably find and
> open those datafiles.
>
> What's the idiomatic way of going about this?
One idiomatic way to do this in Clojure is:
- store the files within a directory named resources at the top level of your
project folder,
- arrange for that folder to be in your classpath at runtime,
- obtain a reference to the files at runtime using .getResource with a
relative path.
If you use lieningen, the resources folder will be in your class path
automatically and the files/directories it contains will be copied to the top
level of your jar file if you make one.
Here's an example:
(defn resource [path]
(when path
(-> (Thread/currentThread) .getContextClassLoader (.getResource path))))
(require '[clojure.java.io :as io])
(slurp (io/file (resource "js/boo.js")))
I did this in a leiningen project called scratch. It returned the contents of
the file
scratch/resources/js/boo.js
because scratch/resources was on the classpath.
See also http://alexott.net/en/clojure/ClojureLein.html .
--Steve
--
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to [email protected]
Note that posts from new members are moderated - please be patient with your
first post.
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en