围绕lein的混乱:依赖和:插件

时间:2016-01-31 15:34:17

标签: clojure clojurescript leiningen

project.clj中,当您看到以下内容时:

:dependencies [[org.clojure/clojure       "1.8.0"]
               [org.clojure/clojurescript "1.7.228"]
               [com.cemerick/piggieback "0.2.1"]
               [org.clojure/tools.nrepl "0.2.10"]
               [org.clojure/core.async "0.2.374"]]

:plugins [[org.bodil/lein-noderepl "0.1.11"]
          [lein-cljsbuild           "1.1.2"]
          [lein-npm                 "0.6.1"]
          [lein-repls               "1.9.5"]
          [lein-doo                 "0.1.6"]]
  1. 这些包裹来自哪里?它只是Clojars和Maven吗? 可以将Lein配置为从GitHub获取它们吗?
  2. 当这些软件包被添加到您的项目中时,只是下载它们并将它们添加到您的java类路径?或者其他什么东西也在发生?

1 个答案:

答案 0 :(得分:4)

  
      
  1. 这些包裹来自哪里?
  2.   

lein-git-deps

解答得很好

您可以使用类似{{3}}的内容从GitHub下载依赖项,但我建议使用Maven repos,因为这就是Leiningen生态系统的基础。

  
      
  1. lein只是下载它们并将它们添加到你的java类路径中吗?或者还有其他事情发生了?
  2.   

值得进一步讨论。当您启动leiningen REPL(例如)时,Leiningen将首先在其本地~/.m2存储库中查找:dependencies中的所有依赖项。如果它无法在那里找到它们中的任何一个,它将向该项目的每个存储库发出请求,以查看它们是否具有该依赖项的副本。如果他们这样做,Leiningen将下载它,然后递归下载依赖项依赖项等等。下载完所有依赖项后,Leiningen会将它们全部添加到您的应用程序的类路径中并启动应用程序。

Leiningen要记住的一件事是,有两个JVM和两个类路径,一个用于您的应用程序,另一个用于Leiningen。当您向:dependencies添加依赖项时,它们将进入您的应用程序的类路径,当它们被添加到:plugins时,它们将转到Leiningen的类路径。