如何在编译时获取项目版本

时间:2017-01-12 12:08:16

标签: clojure clojurescript leiningen

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

0 个答案:

没有答案