Clojureはプロジェクトをインストールし、ClassPathに入れます
質問
インストールしたばかりです 基準, 、そして、私はそれをREPLや他のプロジェクトから使用できるようにしたいと思っています。どこからでもインストールされているライブラリを使用できるように、Java ClassPathを拡張するにはどうすればよいですか?
将来、私が取り組んでいるすべてのプロジェクトで簡単に機能できる答えに感謝します。私はLeiningenを使用しています、そして、私はあなたが走るときにこれを行うと思います lein install
, 、しかし、私は何か間違ったことをしているか、それだけでは不十分です。
解決
基本的なMaven(Leinはフードの下でMavenを使用しています)とJava ClassPath Mechanicsを学ぶ必要があります。非常に簡単な概要については:
Mavenは、Hidden Directoryの.m2に依存関係をホームフォルダーに保存します。フォルダの周りを閲覧すると、理にかなっています。走るとき lein install
そのフォルダーに瓶を入れます。インストールしたものを見つけてみてください。ただし、使用するほとんどの依存関係は、Clojarsのようなサーバー上にあるため、手動でインストールしたように手動でインストールする必要はありません。たとえば、Criteriumはです ここ.
プロジェクトでは、Project.cljの依存関係としてCriteriumを追加する必要があります。それは次のようになります:
(defproject your-project "0.1.5" :description "blah"
:dependencies [[org.clojure/clojure "1.2.0"]
[org.clojure/clojure-contrib "1.2.0"]
[criterium "0.0.1-SNAPSHOT"]
]
:dev-dependencies
[[swank-clojure "1.2.1"]])
次に、プロジェクトのルートフォルダーにCDを使用して実行します lein deps
. 。これにより、project.cljの依存関係をダウンロードし、.m2に自動的にプロジェクトのlibフォルダーに入れます。 ClassPathのセットアップ実行でREPLを起動するには lein repl
Criteriumを使用する各プロジェクトは、Project.cljの依存関係として追加する必要があります。
他のヒント
将来、私が取り組んでいるすべてのプロジェクトで簡単に機能できる答えに感謝します。
残念ながら、これはJVMでは不可能です。実行時にClassPathを変更することはできないため、各プロジェクトについて個別に計算する必要があります。 LeiningenやCLJRのようなツールは、一部のコンテキストで同様のものを提供する場合がありますが、システム全体のクラスパスはありません。
$ lein install swank-clojure 1.3.0-SNAPSHOT
これにより、Swank-clojureが〜/.lein/プラグインにインストールされます。これにより、すべてのLeiningenプロジェクトで開発者依存関係として利用可能になり、プロジェクトのコンテキスト外で「Lein Repl」を実行すると利用可能になりますが、プロジェクトの実際の依存関係は、そのプロジェクトのproject.cljファイルに移動する必要があります。それ以外の場合は、マシンで動作しますが、繰り返しないプロジェクトを簡単に作成できます。