有人能告诉我lein deps是如何工作的吗?如果lein在~/.m2中找到项目所需版本的依赖项,那么lein还会再次下载同一个包吗?
让我们将其分为几个问题,并尝试对每个问题给出简要说明:
有人能告诉我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编译后的奇怪故障时运行它可能会有所帮助)