This page is not created by, affiliated with, or supported by Slack Technologies, Inc.
2022-02-03
Channels
- # announcements (8)
- # aws (2)
- # babashka (16)
- # beginners (173)
- # calva (13)
- # cider (4)
- # cljfx (6)
- # cljs-dev (108)
- # clojure (63)
- # clojure-australia (2)
- # clojure-dev (10)
- # clojure-europe (73)
- # clojure-italy (8)
- # clojure-nl (4)
- # clojure-norway (5)
- # clojure-uk (4)
- # clojurescript (49)
- # clojureverse-ops (4)
- # community-development (3)
- # core-async (23)
- # cursive (3)
- # data-science (5)
- # datomic (25)
- # emacs (3)
- # events (1)
- # fulcro (13)
- # helix (5)
- # introduce-yourself (1)
- # lein-figwheel (1)
- # lsp (36)
- # malli (1)
- # meander (2)
- # membrane (4)
- # music (8)
- # nextjournal (51)
- # off-topic (47)
- # other-languages (5)
- # pathom (31)
- # pedestal (5)
- # planck (14)
- # polylith (5)
- # portal (1)
- # re-frame (30)
- # react (2)
- # reagent (24)
- # releases (1)
- # rewrite-clj (18)
- # ring (9)
- # sci (33)
- # shadow-cljs (49)
- # testing (3)
- # tools-build (21)
- # tools-deps (29)
- # vim (19)
- # web-security (1)
- # xtdb (12)
what's the story in polylith with incompatible transitional dependencies. We have 2 components that depend on incompatible versions of apache jena. We are on Java 11 but not using java modules (which might also not help much since I don't think jdk modules use versions and the packages would be the same .. ?!)
Let’s say we have two different components c1
and c2
which depend on different versions of the library x
(let’s call them x1
and x2
). Let’s say we also have two projects p1
and p2
that both contain c1
and c2
and that we want p1
to use x1
and p2
to use x2
. To solve this we need to manage the library dependencies at the project level and remove the dependency to x
from c1
and c2
and instead add x
as a project dependency, so that p1
depends on x1
and p2
depends on x2
. For development
we have to choose which version of the library to use.
thanks, yeah, makes sense - I guess aliases can be used to add libraries in the component
If the two components are implementing the same interface, then you need profiles to handle that for the development
project, otherwise profiles are not needed.
@U011NGC5FFY at work we have this exact situation with Jackson - one project has to have a different (older) version so we specify Jackson at the project level (including development, where we also use the older version so we can run the code that depends on it in the REPL).