Caching 让leiningen缓存包
在clojurescript项目中,我希望leiningen在CI构建期间减少对internet连接的依赖。我希望它能将包缓存在网络光盘上(使用Caching 让leiningen缓存包,caching,clojure,clojurescript,leiningen,Caching,Clojure,Clojurescript,Leiningen,在clojurescript项目中,我希望leiningen在CI构建期间减少对internet连接的依赖。我希望它能将包缓存在网络光盘上(使用:local repo设置创建一个“共享缓存”),然后将其添加为存储库,这样它就可以首先从那里获取,并且只有在“共享缓存”中找不到时才从clojars和其他外部站点获取 我阅读并删除了我的~/.m2文件夹,并将以下内容添加到我的项目.clj: :profiles {:local-cache {:local-repo "/shared
:local repo
设置创建一个“共享缓存”),然后将其添加为存储库,这样它就可以首先从那里获取,并且只有在“共享缓存”中找不到时才从clojars和其他外部站点获取
我阅读并删除了我的~/.m2
文件夹,并将以下内容添加到我的项目.clj
:
:profiles {:local-cache
{:local-repo "/shared/disc/clojars-cache"
:repositories {"local" {:uri "file:///shared/disc/clojars-cache"
:releases {:checksum :ignore}}}}}
带有lein with profile+本地缓存cljsbuild的初始构建确实填充了缓存,但是
我的~/.m2/repository
文件夹被重新创建并填充了内容,尽管它似乎只是leiningen需要的clojure内容,而且
删除~/.m2
后,后续重建似乎根本不使用本地存储库,而是从clojars下载
很明显我错过了什么。。。或者也许我用了一种完全错误的方式
简言之,我怎样才能让莱宁根
在网络光盘上创建包的缓存,以及
让它更喜欢这个缓存作为包的源(而不是像Clojar这样的外部源)
默认情况下,Leiningen已经倾向于转到~/.m2
。只有当Clojars的~/.m2
中还没有本地存储请求的JAR副本时,它才会转到Clojars。此规则的例外情况是,如果您指定的是快照版本,则它将每天(默认情况下)到网络上检查一次快照版本是否为最新版本
如果您根本不想让Leiningen进入网络,您可以将该键设置为true
回答您的问题:
如何让Leiningen在网络磁盘上创建包缓存
Leiningen已经在~/.m2
中创建了一个包缓存。您可以将该目录符号链接到网络磁盘,或者像现在这样使用:local repo
,尽管听起来好像:local repo
不适合您
如何让Leiningen更喜欢此缓存而不是外部源
莱宁根已经这样做了。听起来像是:本地repo
要么不工作,要么配置不正确,要么该目录不可由Leiningen写入
退一步来看更广泛的问题,您希望在CI构建中防止不必要的网络流量。默认情况下,Leiningen已经缓存了每个依赖项。您没有说您正在使用哪个CI工具,但它们都应该能够在运行之间缓存~/.m2
文件夹。根据工具的不同,您必须为每个项目或每台机器下载一次DEP。我建议坚持这一点,而不是试图通过网络共享DEP,因为这可能导致难以调试的测试失败
如果这对您不起作用,您能否提供有关您的设置的更多详细信息,以及为什么希望Leiningen在您的CI构建中减少对网络的依赖
更新:看到Gitlab CI正在使用后,您似乎需要添加一个
基本上,您确认leiningen
应该像我期望的那样工作,但它没有。当我删除~/.m2
和:local repo
指向的文件夹并运行生成时,这两个文件夹都会被创建。在:local repo
中,我找到所有使用的包(Clojure和ClojureScript包),在~/.m2
中,我只找到Clojure包(即leiningen自己使用的包,如figwheel
和ring
)。我使用的是Gitlab CI,每个构建都有自己的Docker容器,所以在运行之间共享并不容易。我已经用Gitlab缓存的文档更新了这篇文章。这有用吗?确实有用。我读过并使用了人工制品
,但没有缓存
。Gitlab CI似乎不允许缓存源代码树之外的内容,因此我使用了:local repo.local-m2“
将缓存移动到源代码树中(这实际上起到了作用,这让我想知道我最初使用的:local repo
的绝对路径是否不受支持/有缺陷)。我认为这是编写Gitlab CI YAML文件的更好的资源。
cache:
paths:
- ~/.m2