请分享您的看法,参加2024年Clojure调查!)

欢迎!请访问关于页面,了解更多关于这个网站如何运作的信息。

+7
tools.deps

Leiningen有一个名为管理依赖的功能。这允许您为一个传递性依赖设置一个通用的版本,而不是依赖于依赖提供的版本。当您想指定一个库的版本而不实际添加对其的依赖时,这很有用。这有着非常类似的效果(我认为),就像直接将依赖添加到您的Leiningen :dependencies中一样,但更好地传达了意图。

deps.edn中是否有类似的东西?一个在不直接添加到:deps的情况下,为依赖指定版本解析的途径?

2 个答案

+4

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

我们的(mono-)repo有一个包含项目范围文件的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
by

deps中的类似用途案例是:.default-deps,这允许你在版本未定义时设置默认依赖。但是,我们从未真正指定如何包含不带版本的依赖,以便默认值会被选中。

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

因此,这仍然是一个正在进行中的项目。

by
嗨 @alexmiller,
我喜欢 :default-deps!
最好的方法是怎样将其添加进来?

我希望的是包含blessed-versions.edn或类似的根目录,
然后在子目录中有版本为"nil"的deps.edn,并拉取"blessed版本",这样不需要使用CLJ_CONFIG(它与应用户配置冲突)就能实现吗?
by
目前我想不是这样。
by
我们是否已经指定了“如何包含不带版本的依赖以便默认值会被选中”?@alexmiller
by
目前没有更新,但我觉得https://ask.clojure.org/index.php/9849/teams-common-dependencies-tooling-across-multiple-projects 可能是投票/关注对此类更新位置的最佳选择。
...