Ada*_*deg 3 clojure argument-passing command-line-arguments leiningen
我有一个project.clj
文件,我想根据leiningen调用时传入的参数使用不同的文件.这是我的假设示例项目
(defproject simple "0.0.1"
:source-paths [(get-argument "source.path")])
Run Code Online (Sandbox Code Playgroud)
(在这种情况下get-argument
只会打电话System/getProperty
).我会像这样使用这个文件,
lein2 compile -Dsource.path=path/to/location
Run Code Online (Sandbox Code Playgroud)
问题是双重的,
-Dkey=value
语法.我在关于传递可选/额外参数的文档中找不到任何内容.我错过了一些明显的东西吗defproject
似乎是以特殊方式处理的.我找不到一种简单的方法来将代码放入其中.我找到了一些方法
(我实际想要使用它的是我有一个带有不同工件的clojurescript项目.虽然可以为它配置不同的构建,但它们都共享相同的交叉.)
在类似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上的效果如何.