5

project.cljleiningen によって呼び出されたときに渡される引数に応じて、別の方法で使用したいファイルがあります。これが私の架空のサンプルプロジェクトです

(defproject simple "0.0.1"
  :source-paths [(get-argument "source.path")])

(この場合get-argument、単純に を呼び出しますSystem/getProperty)。このファイルを次のように使用します。

lein2 compile -Dsource.path=path/to/location

問題は 2 つあります。

  • leiningen に引数を渡す方法がわかりません。-Dkey=value構文を受け入れません。オプション/追加の引数を渡すことに関するドキュメントには何も見つかりませんでした。明らかな何かが欠けていますか?
  • 内部のサブフォームdefprojectは特別な方法で処理されているようです。コードを挿入する簡単な方法が見つかりませんでした。

私はいくつかのアプローチを見つけました

(私が実際に使用したいのは、さまざまな成果物を含む clojurescript プロジェクトがあることです。さまざまなビルドを構成することは可能ですが、それらはすべて同じクロスオーバーを共有しています。)

4

1 に答える 1

11

project.cljUnix ライクなプラットフォームで便利なアプローチの 1 つは、ファイル内のチルダでマークされた式を評価する lein の意欲と組み合わせて、環境変数を使用することです。したがって、あなたの例では、次の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 コンパイル

このアプローチが Windows でどの程度うまく機能するかはわかりません。

于 2013-04-09T05:25:32.677 に答える