【问题标题】:Pass argument to leiningen readable by project.clj将参数传递给 project.clj 可读的 leiningen
【发布时间】: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 中的子表单似乎以特殊方式处理。我找不到将代码放入其中的简单方法。

我找到了一些方法

(我真正想要使用它的是我有一个具有不同工件的 clojurescript 项目。虽然可以为它配置不同的构建,但它们都共享相同的交叉。)

【问题讨论】:

    标签: clojure command-line-arguments argument-passing leiningen


    【解决方案1】:

    在类 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 上的效果如何。

    【讨论】:

      猜你喜欢
      • 2018-04-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-09-27
      • 1970-01-01
      相关资源
      最近更新 更多