Могу ли я заставить lein игнорировать зависимости от любого кода, внешнего по отношению к текущему проекту Clojure? - PullRequest
0 голосов
/ 24 октября 2018

Я вызываю некоторый код Clojure (1.8) в более крупном Java-проекте, который я не полностью контролирую.Недавно к родительскому элементу был добавлен некоторый код, вызывающий конфликты с 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]]]

Running mvn dependency:tree|grep http для другого проекта возвращает следующее (обратите внимание, что этот проект также является дочерним по отношению к родителю):

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

Есть ли способ игнорировать конфликты, возникающие вне моего кода Clojure, в lein (или иначе)?

1 Ответ

0 голосов
/ 24 октября 2018

необходимо пройти через конфликты и исправить их.Существует два подхода:

  • Исключения: исключить каждую зависимость, о которой сообщается в 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 ...]
...