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,它拖入 "祝福版本"……这能不能在不使用 CLJ_CONFIG(它与用户配置冲突)的情况下实现?
目前还不行。
我们是否已指定 "如何包含没有版本的依赖项,以便选择默认值" 了?@alexmiller
暂无更新,但我觉得https://ask.clojure.org/index.php/9849/teams-common-dependencies-tooling-across-multiple-projects可能是投票/观察此问题更新的地方。
...