Clojure安装项目并将其放在classpath上

时间:2011-02-01 01:15:41

标签: clojure leiningen

我刚刚安装了criterium,我希望能够从repl和其他项目中使用它。如何扩展java类路径,以便我可以从任何地方使用已安装的库?

我很感激能够轻松处理我将来工作的所有项目的答案。我正在使用leiningen,我认为当你运行lein install时会这样做,但要么我做错了,要么就是不够。

2 个答案:

答案 0 :(得分:8)

你必须学习基本的maven(lein使用maven under the hood)和java classpath mechanics。简要概述:

maven将依赖项存储在主文件夹中的隐藏目录.m2中。浏览文件夹,这将是有道理的。当你运行lein install时,它会将jar放在该文件夹中。尝试找到你安装的那个。但是,您使用的大多数依赖项都将位于像clojars这样的服务器上,因此您不需要像操作那样手动安装它。例如,标准是here

在项目中,您需要在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"]])

现在进入项目的根文件夹并运行lein deps。这将下载project.clj中的依赖项,并自动将它们放在.m2中并放入项目的lib文件夹中。要使用类路径设置启动repl,请运行lein repl

每个使用标准的项目都需要在项目中添加它作为依赖项.clj

答案 1 :(得分:5)

  

我很欣赏能够轻松应对我未来所有项目的答案。

不幸的是,这在JVM上是不可能的;您无法在运行时修改类路径,因此必须为每个项目单独计算它。虽然Leiningen和cljr之类的工具可能在某些情况下提供类似的东西,但是没有系统范围的类路径:

$ lein install swank-clojure 1.3.0-SNAPSHOT

这会将swank-clojure安装到〜/ .lein / plugins中,这将使它在所有Leiningen项目中作为dev-dependency使用,并且当你在项目的上下文之外进行“lein repl”时将使它可用,但是项目的实际依赖项需要放在该项目的project.clj文件中。否则,很容易创建在您的机器上工作但不可重复的项目。