Setting a project property to a non literal string

2019-05-17 11:27发布

问题:

Take a simple project file:

(defproject sample-clojure-cloudbees "1.0.0-SNAPSHOT" :description "Sample clojure application - clojure 1.3 !" :blah "hello")

When I read (get project :blah) I get "hello" string returned - as expected.

If I replace "hello"

:blah (slurp "some file...")

I get an error, Caused by: java.lang.ClassCastException: clojure.lang.PersistentList cannot be cast to java.lang.String

It seems to not be evaluating things how I expect, any ideas?

回答1:

defproject is a macro it won't evaluate (slurp...) unless you tell it to,

replacing,

:blah (slurp "some file...")

with,

:blah ~(slurp "some file...")

will give you the content of the file.