criteriumをインストールしたばかりで、repl や他のプロジェクトから使用できるようにしたいと考えています。インストールしたライブラリをどこからでも使用できるように、Java クラスパスを拡張するにはどうすればよいですか?
今後取り組むすべてのプロジェクトで簡単に機能する回答をいただければ幸いです。私は leiningen を使用しており、実行するとこれが行われると思いますがlein install
、何か間違っているか、それでは十分ではありません。
基本的なmaven(leinは内部でmavenを使用)とJavaクラスパスの仕組みを学ぶ必要があります。非常に簡単な概要:
maven は、ホーム フォルダーの隠しディレクトリ .m2 に依存関係を格納します。フォルダをブラウズすると、それが理にかなっています。実行lein install
すると、そのフォルダーにjarが配置されます。インストールしたものを探してみてください。ただし、使用するほとんどの依存関係は clojars のようなサーバー上にあるため、手動でインストールする必要はありません。たとえば、基準はこちらです。
プロジェクトでは、project.clj に依存関係として基準を追加する必要があります。次のようになります。
(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 フォルダーに配置されます。クラスパス設定を実行して repl を開始するにはlein repl
基準を使用する各プロジェクトは、それを project.clj の依存関係として追加する必要があります。
今後取り組むすべてのプロジェクトで簡単に機能する回答をいただければ幸いです。
残念ながら、これは JVM では不可能です。実行時にクラスパスを変更することはできないため、プロジェクトごとに個別に計算する必要があります。システム全体のクラスパスはありませんが、Leiningen や cljr などのツールは、いくつかのコンテキストで同様のものを提供する場合があります。
$ lein install swank-clojure 1.3.0-SNAPSHOT
これにより、swank-clojure が ~/.lein/plugins にインストールされ、すべての Leiningen プロジェクトで開発依存として利用できるようになり、プロジェクトのコンテキスト外で「lein repl」を実行したときに利用できるようになります。プロジェクトの実際の依存関係は、そのプロジェクトの project.clj ファイルに入れる必要があります。そうしないと、マシン上で機能するが再現性のないプロジェクトを簡単に作成できます。