谁能告诉我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/