将参数传递给Leiningen,使其可被project.clj读取

5

我有一个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内部的子表单似乎以特殊方式处理。我找不到简单的方法将代码放入其中。

我发现了一些方法

(实际上我想用它来处理一个带有不同构件的clojurescript项目。虽然可以为其配置不同的构建,但它们都共享相同的交叉点。)

1个回答

11

在类Unix平台上方便的一种方法是使用环境变量,结合lein愿意评估标记有波浪号表达式的project.clj文件。 所以对于您的示例,您可以提供像这样的project.clj

(defproject simple "0.0.1"
  :source-paths [~(System/getenv "MY_SRC_PATH")]
  :dependencies [[org.clojure/clojure "1.5.0"]])

...然后在启动lein时设置环境变量,例如:

MY_SRC_PATH="s2" lein compile

我不知道这种方法在Windows上会有多好。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接