`lein deps`是如何工作的?

13

有人能告诉我lein deps是如何工作的吗?如果lein~/.m2中找到项目所需版本的依赖项,那么lein还会再次下载同一个包吗?


2
https://github.com/technomancy/leiningen/blob/master/src/leiningen/deps.clj - cfrick
非常感谢,@cfrick - Daniel Wu
1个回答

20

让我们将其分为几个问题,并尝试对每个问题给出简要说明:

  • 有人能告诉我lein deps如何工作吗?
    “deps”目标的目的是确保在本地maven仓库中可用于运行此项目的每个依赖项都可用。简而言之,它将需要在项目运行时位于类路径上的jar包填充到~/.m2/...中

  • 如果lein在~/.m2中找到了项目所需版本的依赖项,它是否仍会再次下载同一个包?
    不会,它只会按需下载,而不是从本地仓库中下载。默认情况下,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编译后的奇怪故障时运行它可能会有所帮助)


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接