gpt4 book ai didi

clojure - 我可以强制 lein 忽略当前 Clojure 项目外部任何代码的依赖关系吗?

转载 作者:行者123 更新时间:2023-12-05 04:04:13 25 4
gpt4 key购买 nike

我在一个我无法完全控制的大型 Java 项目中调用一些 Clojure (1.8) 代码。最近,一些代码被添加到导致与 HTTP 客户端 clj-http 冲突的父级。

在我的 Clojure 项目中,这是 lein deps :tree|grep http 的输出:

[clj-http "3.7.0"]    
[org.apache.httpcomponents/httpasyncclient "4.1.3" :exclusions [[org.clojure/clojure]]]
[org.apache.httpcomponents/httpcore-nio "4.4.6"]
[org.apache.httpcomponents/httpclient "4.5.3" :exclusions [[org.clojure/clojure]]]
[org.apache.httpcomponents/httpcore "4.4.6" :exclusions [[org.clojure/clojure]]]
[org.apache.httpcomponents/httpmime "4.5.3" :exclusions [[org.clojure/clojure]]]

为另一个项目运行 mvn dependency:tree|grep http 返回以下内容(注意该项目也是父项目的子项目):

[INFO] +- org.apache.httpcomponents:httpclient:jar:4.1.1:compile
[INFO] | +- org.apache.httpcomponents:httpcore:jar:4.1:compile

有没有一种方法可以忽略源 self 的 Clojure 代码之外的冲突,in lein(或其他)?

最佳答案

有必要解决冲突并解决它们。有两种方法:

  • 排除:从提供它的每个上游依赖项中排除 lein deps tree 中报告的每个依赖项。当您需要确保不包含传递依赖项时,这使您可以完全控制。虽然它可以......“有点麻烦”;-)

  • 托管依赖项:您还可以将 managed-dependencies 部分添加到您的 project.clj 中,您可以在其中指定将使用的库的确切版本,而不管其他传递依赖项的解析如何。这是一种比较生硬的工具,我倾向于求助于它。

项目中的随机示例:

  :managed-dependencies [[http-kit "2.3.0"]
[org.clojure/clojure "1.9.0"]
[ring/ring-core "1.6.0"]
[ring/ring-jetty-adapter "1.6.0"]
... lots more ...]

关于clojure - 我可以强制 lein 忽略当前 Clojure 项目外部任何代码的依赖关系吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52964663/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com