我有一个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项目。虽然可以为其配置不同的构建,但它们都共享相同的交叉点。)