clojure - `lein deps' 是如何工作的?

标签 clojure leiningen

谁能告诉我lein deps是如何工作的?如果lein~/.m2中找到项目所需版本的依赖项,lein仍然会再次下载相同的包?

最佳答案

让我们将其分为几个问题,我将尝试对每个问题进行简要介绍:

  • 有人告诉我 lein deps 是如何工作的吗?
    “deps”目标的目标是确保运行该项目所需的每个依赖项在本地 Maven 存储库中可用。简而言之,它使用 jar 填充 ~/.m2/...,这些 jar 需要位于类路径上才能运行项目

  • 如果 lein 在 ~/.m2 中找到项目所需版本的依赖项,lein 还会再次下载相同的包吗?
    不,它只根据需要下载内容,而不是在本地存储库中。默认情况下,虽然 lein 仅每 24 小时检查一次新快照版本,但您可以通过运行“lein -U deps”使其更频繁地执行此操作

一旦 lein deps 完成并且包可用,那么 lein 就可以通过将每个所需 jar 的位置作为类路径参数传递来启动 jvm,如下所示:

java -classpath /project/path/test:/project/path/src:
               /project/path/dev-resources:/project/path/resources: 
               /project/path/target/classes:
               /home/ubuntu/.m2/repository/org/apache/maven/maven-model-builder/3.0.4/maven-model-builder-3.0.4.jar:
               /home/ubuntu/.m2/repository/org/apache/maven/maven-repository-metadata/3.0.4/maven-repository-metadata-3.0.4.jar: 
               /home/ubuntu/.m2/repository/org/apache/maven/wagon
               :/home/ubuntu/.m2/repository/org/clojure/tools.analyzer/0.1.0-beta12/tools.analyzer-0.1.0-beta12.jar:
               /home/ubuntu/.m2/repository/org/tcrawley/dynapath/0.2.3
               ... lots more paths here ...

很久以前 lein 曾经将它们复制到项目中的本地文件夹中,它不再这样做,并且您可以安全地忽略任何告诉您运行“lein clean”的文档(尽管运行它不会有什么坏处,如果您正在尝试清理 AOT 编译后的奇怪故障)

关于clojure - `lein deps' 是如何工作的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28225791/

相关文章:

clojure - pmap 和线程数

clojure - 打ic 1.0.0-beta1错误

clojure - Clojure 中的连接池

testing - 莱宁根的单元测试找不到测试文件

java - Clojure/Lein/打包到 jar 里

clojure - leiningen:缺少 super pom

macros - 如何在 clojure 中制作这个宏变量?

Clojure:传递给 core$rest 的参数 (4) 数量错误

emacs - 带有 nrepl 的 lein ring 服务器不支持 cider-nrepl

java - 新的 compojure 模板无法启动 "No reader function for tag namespace"