This page is not created by, affiliated with, or supported by Slack Technologies, Inc.
2024-05-21
Channels
- # announcements (4)
- # beginners (47)
- # cider (7)
- # clj-kondo (9)
- # cljs-dev (16)
- # clojure (8)
- # clojure-dev (33)
- # clojure-europe (39)
- # clojure-germany (2)
- # clojure-my (1)
- # clojure-nl (1)
- # clojure-norway (18)
- # clojure-uk (6)
- # clojuredesign-podcast (8)
- # clojurescript (12)
- # cursive (9)
- # datomic (24)
- # docker (3)
- # fulcro (23)
- # hoplon (7)
- # hyperfiddle (2)
- # java (5)
- # jvm (3)
- # leiningen (9)
- # lsp (6)
- # off-topic (75)
- # pathom (17)
- # polylith (21)
- # reitit (1)
- # rewrite-clj (11)
- # scittle (2)
- # shadow-cljs (57)
- # uncomplicate (6)
- # yamlscript (27)
Hi everyone.
When there's a transitive dependency issue, lein deps :tree
prints suggestions like this.
[org.clojure/clojurescript "1.11.132"] -> [com.cognitect/transit-java "1.0.362" :exclusions [org.clojure/clojure]] -> [javax.xml.bind/jaxb-api "2.3.0"]
overrides
[djblue/portal "0.55.1"] -> [com.cognitect/transit-clj "1.0.333"] -> [com.cognitect/transit-java "1.0.371"] -> [javax.xml.bind/jaxb-api "2.4.0-b180830.0359"]
Consider using these exclusions:
[djblue/portal "0.55.1" :exclusions [javax.xml.bind/jaxb-api]]
I'm wondering why the default suggestion isn't to exlude jaxb-api from clojurescript instead given that it's using an older version.iirc this is a feature from pomegranate, which uses maven for dependency resolution
The exclusion is based off whatever is closest to the root of your dependency tree. See https://maven.apache.org/guides/introduction/introduction-to-dependency-mechanism.html#Transitive_Dependencies for details
In nearly all Clojure/Leiningen projects, I use :managed-dependencies
since gives the finest control over which exact versions of a dependency get used across (sub)projects.
if you need to enforce a consistent version of a dependency across multiple projects, then managed dependencies are exactly for you; that's why they exist in maven (and leiningen)