【问题标题】:including other files into project.clj将其他文件包含在 project.clj 中
【发布时间】:2011-10-12 10:19:32
【问题描述】:

是否可以在 clojure 项目的 project.clj 中包含(导入?)其他文件? (特别是莱宁根)。

例如我们有:

(defproject sample-clojure-cloudbees "1.0.0-SNAPSHOT"
  :description "Sample clojure application - clojure 1.3 !"
  :some-key "some value")

最好在 project.clj 以外的文件中定义更多的东西,例如 :some-key。

【问题讨论】:

  • 迈克尔,你能澄清一下你的意图吗?您是否只想包含其他应该编译的项目?为此,您可以指定依赖项,这些依赖项可以有自己的 project.clj 文件。 Example(然后查看“modules”目录下的其他部分)。
  • 查看我对您其他问题的回答,stackoverflow.com/questions/7738628/…
  • Paul - 只是在外部文件中有一些配置条目 - 在这种情况下,我将添加到 .gitignore 中的秘密 - 但 project.clj 将清楚地“记录”您需要通过以下方式提供秘密包括这个文件。例如,我对播放框架配置做了类似的事情(如果这意味着什么!)。

标签: clojure leiningen


【解决方案1】:

defproject 没有理由必须是顶级表单。您可以通过构建参数列表来构造对 defproject 的调用。唯一的问题是 defproject 是一个宏,所以直接的“应用”函数将无济于事。

(def extra-args (read-string (slurp "project-extension.clj")))
(eval (concat '(defproject sample-clojure-cloudbees "1.0.0-SNAPSHOT")
                extra-args))

请注意,这是读取文件,然后评估该文件中的元素。确保您知道文件的来源!

【讨论】:

  • 当然 - 在这种情况下,外部文件是本地和私有设置。在这种情况下,我仍然被宏绊倒,感谢您指出这一点!
  • 听起来不错 - 我想知道其他人是否会认为这足以成为 leiningen 本身的功能?
猜你喜欢
  • 2021-11-09
  • 2011-06-24
  • 2021-12-22
  • 1970-01-01
  • 2016-03-20
  • 2018-05-22
  • 2015-07-28
  • 2020-03-28
相关资源
最近更新 更多