【问题标题】:Confusion surrounding lein :dependencies and :plugins围绕 lein :dependencies 和 :plugins 的困惑
【发布时间】:2016-01-31 15:34:16
【问题描述】:

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. 当这些包被添加到您的项目中时,lein 是否只是下载它们并将它们添加到您的 java 类路径中?或者还有其他事情发生?

【问题讨论】:

标签: clojure clojurescript leiningen


【解决方案1】:
  1. 这些包是从哪里来的?

What are the leiningen default repositories?回答得很好

您可以使用 lein-git-deps 之类的东西从 GitHub 下载依赖项,但我建议使用 Maven 存储库,因为这是构建 Leiningen 生态系统的基础。

  1. lein 是否只是下载它们并将它们添加到您的 java 类路径中?还是发生了其他事情?

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

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

【讨论】:

    猜你喜欢
    • 2011-01-30
    • 1970-01-01
    • 2020-06-15
    • 2015-10-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-22
    • 2020-08-01
    相关资源
    最近更新 更多