我刚刚安装了criterium,我希望能够从repl和其他项目中使用它。如何扩展java类路径,以便我可以从任何地方使用已安装的库?
我很感激能够轻松处理我将来工作的所有项目的答案。我正在使用leiningen,我认为当你运行lein install
时会这样做,但要么我做错了,要么就是不够。
答案 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文件中。否则,很容易创建在您的机器上工作但不可重复的项目。