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

欢迎!请参阅 关于 页面以获取更多关于它是如何工作的信息。

+1 投票
tools.deps
编辑

在 deps.edn 中,能够写出 :exclusions [io.netty/*] 真是非常方便。

例如,这是我的项目 clojure -Stree 的一个片段。您建议如何使这个项目具有所有 io.netty 库的一致版本而不需要写出冗长的、容易出错误地排除列表?

com.datomic/datomic-pro 0.9.5981
  io.netty/netty-all 4.1.32.Final

com.turo/pushy 0.13.10
  io.netty/netty-handler-proxy 4.1.37.Final
    io.netty/netty-codec-socks 4.1.37.Final
  io.netty/netty-resolver-dns 4.1.37.Final
    io.netty/netty-codec-dns 4.1.37.Final

software.amazon.awssdk/s3 2.10.5
  software.amazon.awssdk/netty-nio-client 2.10.5
    io.netty/netty-common 4.1.42.Final
    io.netty/netty-codec-http2 4.1.42.Final
    io.netty/netty-codec 4.1.42.Final
    io.netty/netty-buffer 4.1.42.Final
    io.netty/netty-handler 4.1.42.Final
    io.netty/netty-transport-native-epoll$linux-x86_64 4.1.42.Final
      io.netty/netty-transport-native-unix-common 4.1.42.Final
    io.netty/netty-transport 4.1.42.Final
      io.netty/netty-resolver 4.1.42.Final
    io.netty/netty-codec-http 4.1.42.Final

我希望这种情况下是一个例外,但我觉得大型库既有 "all" 依赖也有个别组件工件是相当常见的。一些例子包括 netty、jetty、ring、ai.h2o 和 com.amazonaws,仅举几例。

Jira 在 https://clojure.atlassian.net/browse/TDEPS-141 登记

1 个答案

+1 投票

这看起来是合理的。在 jira中记录了https://clojure.atlassian.net/browse/TDEPS-141

我认为最大的缺点是,deps.edn 需要额外的步骤来解释,而且通配符随着时间的推移可能会因为在那个 groupId 中创建新的工件而改变其含义。

by
以下将作为一个数据点提到,我们不再使用 :exclusions 与 deps.edn 一起使用 -- 因为我们使用它来控制版本解析方式(这是从我们的 Leiningen/Boot 时代遗留下来的,当时我们将依赖项复制过来)。相反,我们为这些库的 "all" 变量的顶级依赖声明提供一个声明,以便覆盖所有传递依赖项(这是我们在 lein/boot 中的 :exclusions 的主要使用案例)。
...