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

So8*_*res 2 clojure leiningen

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

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

jsh*_*hen 8

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

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"]])
Run Code Online (Sandbox Code Playgroud)

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

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


小智 5

我很感激能够轻松处理我将来工作的所有项目的答案.

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

$ lein install swank-clojure 1.3.0-SNAPSHOT
Run Code Online (Sandbox Code Playgroud)

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