我有一个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 - 这是一种可以解决一半问题的解决方法
- 建立需要基于构建平台的不同依赖项的 leiningen 项目的优雅方法是什么?给出了一些想法如何评估 project.clj 中的代码
- https://github.com/sattvik/leinjacker承诺会做一些肮脏的把戏,但我无法让它在我的环境中工作
(我真正想要使用它的是我有一个具有不同工件的 clojurescript 项目。虽然可以为它配置不同的构建,但它们都共享相同的交叉。)