我刚刚安装了criterium,我希望能够从 repl 和其他项目中使用它。如何扩展 java 类路径以便可以从任何地方使用已安装的库?
我很感激能在我将来从事的所有项目中轻松工作的答案。我正在使用 leiningen,我想它会在你运行时执行此操作lein install
,但要么我做错了什么,要么这还不够。
你必须学习基本的 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
我很感激能在我将来从事的所有项目中轻松工作的答案。
不幸的是,这在 JVM 上是不可能的;您不能在运行时修改类路径,因此必须为每个项目单独计算。没有系统范围的类路径,尽管像 Leiningen 和 cljr 这样的工具在某些情况下可能会提供类似的东西:
$ lein install swank-clojure 1.3.0-SNAPSHOT
这会将 swank-clojure 安装到 ~/.lein/plugins 中,这将使其作为开发依赖项在所有 Leiningen 项目中可用,并且当您在项目上下文之外执行“lein repl”时将使其可用,但是是项目的实际依赖项将需要进入该项目的 project.clj 文件。否则很容易创建在您的机器上工作但不可重复的项目。