`lein deps'工作?

时间:2015-01-29 22:23:19

标签: clojure leiningen

有人能告诉我 lein deps 是如何运​​作的吗?如果 lein 〜/ .m2 中找到依赖项(项目所需的版本), lein 仍会再次下载相同的程序包?

1 个答案:

答案 0 :(得分:12)

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

  • 有人告诉我lein deps是如何运作的吗? “deps”目标的目标是确保运行此项目所需的每个依赖项都可以在您的本地maven仓库中使用。简而言之它填充〜/ .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编译后清除奇怪的失败)