2

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

我很感激能在我将来从事的所有项目中轻松工作的答案。我正在使用 leiningen,我想它会在你运行时执行此操作lein install,但要么我做错了什么,要么这还不够。

4

2 回答 2

8

你必须学习基本的 maven(lein 在后台使用 maven)和 java 类路径机制。对于一个非常简短的概述:

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

在您的项目中,您需要在 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 文件夹中。使用类路径设置运行 repllein repl

每个使用 criterium 的项目都需要将其作为依赖项添加到它的 project.clj

于 2011-02-01T04:09:47.380 回答
5

我很感激能在我将来从事的所有项目中轻松工作的答案。

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

$ lein install swank-clojure 1.3.0-SNAPSHOT

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

于 2011-02-01T18:59:09.657 回答