我在cljc文件中有以下代码:
(ns proj
#?(:cljs
(:require-macros
[proj :refer [define-project-version]])))
(declare project-version)
#?(:clj
(defmacro define-project-version []
`(def ~'project-version ~(first (drop 2 (read-string (slurp "project.clj")))))))
(define-project-version)
当在clj文件中使用以及启动REPL时,这确实有效。但是,当我制作一个uberjar并尝试运行它时,我得到一个关于project.clj的例外 - “没有这样的文件或目录。”错误来自ClojureScript部分。 uberjar编译得很好。
为什么代码试图加载project.clj?是不是应该在编译时运行宏?