gpt4 book ai didi

caching - 让 leiningen 缓存包

转载 作者:行者123 更新时间:2023-12-04 20:34:45 27 4
gpt4 key购买 nike

在一个 clojurescript 项目中,我希望 leiningen 在我们的 CI 构建期间减少对互联网连接的依赖。我希望让它缓存网络磁盘上的包(使用 :local-repo 设置创建“共享缓存”),然后将其添加为存储库,使其首先从那里获取并且仅从 clojars 和其他在“共享缓存”中找不到外部站点时。

我读了this , 删除了我的 ~/.m2文件夹,并将以下内容添加到我的 project.clj :

:profiles {:local-cache
{:local-repo "/shared/disc/clojars-cache"
:repositories {"local" {:uri "file:///shared/disc/clojars-cache"
:releases {:checksum :ignore}}}}}

使用 lein with-profile +local-cache cljsbuild 的初始构建确实填充了缓存,但是
  • 我的 ~/.m2/repository文件夹被重新创建并充满了东西,虽然它似乎只是 leiningen 需要的 clojure 东西,和
  • 删除 ~/.m2 后随后的重建似乎根本不使用本地存储库,而是从 clojars 下载。

  • 显然我错过了一些东西......或者我可能以完全错误的方式处理这个问题。

    简而言之,我怎样才能让 leiningen
  • 在网络磁盘上创建软件包缓存,以及
  • 让它更喜欢这个缓存作为包的来源(而不是像clojars这样的外部来源)?
  • 最佳答案

    Leiningen 已经喜欢去 ~/.m2默认情况下。如果它没有请求的 JAR 副本本地存储在其 ~/.m2 中,它只会转到 Clojars。 .此规则的异常(exception)情况是,如果您指定 SNAPSHOT 版本,它将通过网络检查其拥有的 SNAPSHOT 版本是否是最新的(默认情况下)。

    您可以设置 :offline? 键为 true如果您根本不想让 Leiningen 访问网络。

    回答您的问题:

    1. How can I get Leiningen to create a cache of packages on a network disk?


    Leiningen 已经在 ~/.m2 中创建了一个包缓存。 .您可以将该目录符号链接(symbolic link)到您的网络磁盘,或使用 :local-repo就像你现在一样,虽然听起来像 :local-repo不适合你吗?

    1. How can I get Leiningen to prefer this cache over external sources?


    莱宁根已经这样做了。听起来像 :local-repo要么不工作,没有正确配置,或者该目录不是 Leiningen 可写的?

    回过头来看看更广泛的问题,您希望在 CI 构建中防止不必要的网络流量。默认情况下,Leiningen 已经缓存了每个依赖项。您还没有说您使用的是哪个 CI 工具,但它们都应该具有缓存 ~/.m2 的能力。运行之间的文件夹。根据工具的不同,您必须为每个项目或每台机器下载一次您的 deps。我建议坚持这一点,而不是尝试通过网络共享 deps,因为这可能会导致难以调试测试失败。

    如果这对您不起作用,您能否提供有关您的设置的更多详细信息,以及为什么您希望 Leiningen 在 CI 构建中减少对网络的依赖?

    更新:看到 Gitlab CI 正在使用后,看起来你需要添加一个 caching config ?
    cache:
    paths:
    - ~/.m2

    关于caching - 让 leiningen 缓存包,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37945677/

    27 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com