2024 Clojure状态调查!中分享您的想法。

欢迎!请查阅关于页面,了解更多关于此网站如何运作的信息。

+7
tools.deps

Leiningen有一个名为管理依赖项的功能。这允许您为传递性依赖项设置一个公共版本,而不是依赖于依赖项提供的版本。当您想要指定库的版本而不实际添加对该库的依赖时,这非常有用。它具有与直接将依赖项添加到Leiningen的:dependencies类似的效果(我认为),但传达了更好的意图。

deps.edn中是否有类似的东西?一种不必直接添加到:deps中,也能指定依赖项版本解析的方法?

2 个答案

+4

在我们的工作中,我们非常依赖项目范围的deps.edn文件中的:override-deps(我们使用CLJ_CONFIG来获取它而不是用户级别的deps.edn文件)。我们有一个名为:defaults的别名,其中包含我们想要“管理”的每个依赖项的:override-deps条目。

我们的(单)仓库有一个versions文件夹,其中包含项目范围的文件,然后仓库中的每个子项目都有自己的deps.edn文件,在其中我们指定依赖项,如下所示

selmer {} ; omit :mvn/version "x.y.z"

versions/deps.edn的内容

:aliases
{:defaults
 {:override-deps
  {selmer {:mvn/version "1.12.13"}
   ...}}}

然后在子项目中这样做

CLJ_CONFIG=../versions clojure -A:defaults <whatever else we need>
+1

deps 中的类似用例为 :default-deps,允许您设置当版本未定义时使用的默认依赖项。然而,我们从未真正指定过如何包含没有版本的依赖项,以便选择默认选项。

此外,我们需要在指定基本 deps.edn 时有更多的灵活性,这可能是一个声明默认依赖项的地方。

因此,它仍在进行中。

嗨 @alexmiller ,
我喜欢 :default-deps !
最好的方法是什么来拉取它?

我希望是包含 blessed-versions.edn 或类似的根目录,
然后子目录包含版本为 "nil" 的 deps.edn,然后拉入 "blessed 版本" ... 这是不是在不使用 CLJ_CONFIG (它与会话配置冲突)的情况下可实现的?
目前,我认为不是。
我们是否已经指定了“如何包含没有版本以选择默认选项的依赖项”?@alexmiller
by
未更新,但我觉得https://ask.clojure.org/index.php/9849/teams-common-dependencies-tooling-across-multiple-projects 可能是投票/观看此更新的地方。
...