我在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?是不是应该在编译时运行宏?