Mag*_*nus 5 caching clojure leiningen clojurescript
在clojurescript项目中,我希望leiningen在我们的CI生成过程中减少对互联网连接的依赖。我希望将其缓存在网络磁盘上(使用该:local-repo设置来创建“共享缓存”),然后将其添加为存储库,以使其首先从那里获取,而仅从clojar和其他外部站点获取它在“共享缓存”中找不到。
我阅读了此内容,删除了我的~/.m2文件夹,并将以下内容添加到我的内容中project.clj:
:profiles {:local-cache
{:local-repo "/shared/disc/clojars-cache"
:repositories {"local" {:uri "file:///shared/disc/clojars-cache"
:releases {:checksum :ignore}}}}}
Run Code Online (Sandbox Code Playgroud)
的初始构建lein with-profile +local-cache cljsbuild确实确实填充了缓存,但是
~/.m2/repository文件夹重新创建并填充的东西,但它似乎只能是Clojure的通过需要的东西leiningen,和~/.m2后续重建后,似乎根本不使用本地存储库,而是无论如何都从clojars下载。显然我正在丢失某些东西……或者也许我正在以完全错误的方式来解决这个问题。
总之,我怎么能得到leiningen到
~/.m2莱宁根已经默认选择前往。如果它还没有将请求的 JAR 副本存储在其本地~/.m2. 此规则的例外情况是,如果您指定 SNAPSHOT 版本,它将每天一次(默认情况下)到网络检查其拥有的 SNAPSHOT 版本是否是最新的。
您可以设置:offline?密钥,就好像true您根本不希望 Leiningen 访问网络一样。
回答您的问题:
- 如何让Leiningen 在网盘上创建包缓存?
Leiningen 已经在~/.m2. 您可以将该目录符号链接到您的网络磁盘,或者:local-repo像现在一样使用,尽管:local-repo听起来不适合您?
- 我怎样才能让 Leiningen 更喜欢这个缓存而不是外部源?
莱宁根已经这样做了。听起来:local-repo要么不起作用,要么配置不正确,要么莱宁根无法写入该目录?
回过头来看看更广泛的问题,您希望防止 CI 构建中出现不必要的网络流量。默认情况下,Leiningen 已经缓存了每个依赖项。您还没有说明您正在使用哪个 CI 工具,但它们都应该能够~/.m2在运行之间缓存文件夹。根据工具的不同,您必须为每个项目或每台机器下载一次 deps。我建议坚持这样做,而不是尝试通过网络共享依赖,因为这可能会导致难以调试测试失败。
如果这对您不起作用,您能否提供有关您的设置的更多详细信息,以及为什么您希望 Leiningen 在 CI 构建中减少对网络的依赖?
更新:看到使用了 Gitlab CI 后,看起来您需要添加缓存配置?
cache:
paths:
- ~/.m2
Run Code Online (Sandbox Code Playgroud)