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

我希望这种情况很罕见,但是我认为大型库中通常会有一个“所有”依赖项以及各个组件工件。例如,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中创建了新工件时可能会随时间改变含义。

我把停止使用deps.edn中的:exclusions作为一个数据点提出来——因为我们使用它来控制版本解析方式(这是我们从Leiningen/Boot时代继承下来的,我们将依赖项复制过来)。相反,我们为这些库的"all"变体提供顶层依赖声明,以覆盖所有传递依赖(这是我们在lein/boot中:exclusions的主要用途)。
...