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

4

1 回答 1

11

在类 unix 平台上方便的一种方法是使用环境变量,并结合 lein 对project.clj文件中标有波浪号的表达式求值的意愿。因此,对于您的示例,您可以提供project.clj如下内容:

(defproject 简单“0.0.1”
  :source-paths [ ~(System/getenv "MY_SRC_PATH") ]
  : 依赖 [[org.clojure/clojure "1.5.0"]])

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

MY_SRC_PATH="s2" lein 编译

我不知道这种方法在 Windows 上的效果如何。

于 2013-04-09T05:25:32.677 回答