围绕 lein :dependencies 和 :plugins 的困惑
Confusion surrounding lein :dependencies and :plugins
在 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"]]
- 这些包裹来自哪里?仅仅是 Clojars 和 Maven 吗? Lein 也可以配置为从 GitHub 获取它们吗?
- 当这些包被添加到您的项目中时, lein 只是下载它们并将它们添加到您的 java class 路径中吗? 或者发生其他事情还有吗?
- Where are these packages coming from?
What are the leiningen default repositories?
回答得很好
您可以使用 lein-git-deps 从 GitHub 下载依赖项,但我建议使用 Maven 存储库,因为 Leiningen 生态系统就是围绕它构建的。
- Is lein merely downloading them and adding them to your java class path? Or is something else happening as well?
这值得更多讨论。当您启动 leiningen REPL(例如)时,Leiningen 将首先在其本地 ~/.m2
存储库中查找 :dependencies
中的所有依赖项。如果在那里找不到它们,它将向该项目的每个存储库发出请求,以查看它们是否具有该依赖项的副本。如果他们这样做,Leiningen 将下载它,然后递归地下载依赖项依赖项等等。下载所有依赖项后,Leiningen 会将它们全部添加到应用程序的类路径并启动应用程序。
关于 Leiningen 要记住的一件事是有两个 JVM 和两个类路径,一个用于您的应用程序,一个用于 Leiningen。当您将依赖项添加到 :dependencies
时,它们会进入您应用程序的类路径,当它们被添加到 :plugins
时,它们会进入 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"]]
- 这些包裹来自哪里?仅仅是 Clojars 和 Maven 吗? Lein 也可以配置为从 GitHub 获取它们吗?
- 当这些包被添加到您的项目中时, lein 只是下载它们并将它们添加到您的 java class 路径中吗? 或者发生其他事情还有吗?
- Where are these packages coming from?
What are the leiningen default repositories?
回答得很好您可以使用 lein-git-deps 从 GitHub 下载依赖项,但我建议使用 Maven 存储库,因为 Leiningen 生态系统就是围绕它构建的。
- Is lein merely downloading them and adding them to your java class path? Or is something else happening as well?
这值得更多讨论。当您启动 leiningen REPL(例如)时,Leiningen 将首先在其本地 ~/.m2
存储库中查找 :dependencies
中的所有依赖项。如果在那里找不到它们,它将向该项目的每个存储库发出请求,以查看它们是否具有该依赖项的副本。如果他们这样做,Leiningen 将下载它,然后递归地下载依赖项依赖项等等。下载所有依赖项后,Leiningen 会将它们全部添加到应用程序的类路径并启动应用程序。
关于 Leiningen 要记住的一件事是有两个 JVM 和两个类路径,一个用于您的应用程序,一个用于 Leiningen。当您将依赖项添加到 :dependencies
时,它们会进入您应用程序的类路径,当它们被添加到 :plugins
时,它们会进入 Leiningen 的类路径。