【发布时间】:2013-03-30 18:40:40
【问题描述】:
我有一个 project.clj 文件,我想根据 leiningen 调用时传入的参数以不同方式使用它。这是我假设的示例项目
(defproject simple "0.0.1"
:source-paths [(get-argument "source.path")])
(在这种情况下,get-argument 将简单地调用System/getProperty)。我会这样使用这个文件,
lein2 compile -Dsource.path=path/to/location
问题有两个方面,
- 我不知道如何将参数传递给 leiningen。它不接受
-Dkey=value语法。我在文档中找不到有关传递可选/额外参数的任何内容。我是否遗漏了一些明显的东西? -
defproject中的子表单似乎以特殊方式处理。我找不到将代码放入其中的简单方法。
我找到了一些方法
- https://github.com/weavejester/environ 看起来很有希望,但它似乎只能在正确的 clojure 代码中工作,而不是在 project.clj 中
- https://groups.google.com/forum/?fromgroups=#!topic/leiningen/t8G6Et1_j8w -- 这是一个可以解决一半问题的解决方法
- What is an elegant way to set up a leiningen project that requires different dependencies based on the build platform? 给出了一些如何在 project.clj 中评估代码的想法
- https://github.com/sattvik/leinjacker 承诺会做一些肮脏的把戏,但我无法让它在我的环境中工作
(我真正想要使用它的是我有一个具有不同工件的 clojurescript 项目。虽然可以为它配置不同的构建,但它们都共享相同的交叉。)
【问题讨论】:
标签: clojure command-line-arguments argument-passing leiningen