web-dev-qa-db-ja.com

REPL再起動なしでレインプロジェクトに依存関係を追加する方法はありますか?

私が今やっていることは、project.cljを開いて、そこに依存関係を追加し、lein deps replを再起動し、次にuserequireなど。

問題は、起動時間が遅く、ファイルを再度リロードする必要があるため、私はreplを再起動したくないということです。

それで、leinプロジェクトに依存関係を追加するより良い方法はありますか? replを再起動せずに?

45
LoveProgramming

動的クラスパスローダーと依存関係リゾルバーである Alembic を使用できます。良い点は、すべてのザクロの依存関係を読み込まないことです。

以下を.lein/profiles.cljに追加してください:

{:user
  {:dependencies [[alembic "0.3.2"]]}}

次に、Replで必要なクラスパスをロードするだけで、leinif needによってリポジトリからプルされます。

(require 'alembic.still)
(alembic.still/distill '[enlive "1.1.5"])

(require 'net.cgrand.enlive-html)が機能するようになりました。

37
i-blis

簡単なテストのために pomegranate を使用して依存関係をその場で追加できます

=> (use '[cemerick.pomegranate :only (add-dependencies)])
nil
=> (add-dependencies :coordinates '[[incanter "1.2.3"]])

実際に依存関係を追加したため、私は通常ヒットしました

  • Alt-x nrepl-restart
  • ctrl-cctrl-k ファイルをリロードするには、
  • ctrl-calt-n バッファ内の名前空間iに戻る

プロセス全体には、jvmの起動時間(私が同意するのは少し辛いことです)に5秒かかります。これは、ファイルのロードで必要な初期化がすべて行われる状態にプロジェクトを維持するのに役立ちます。

13
Arthur Ulfeldt