Remix.run Logo
int_19h 4 days ago

What happens when one requires Foo 1.0 and the other requires Foo 2.0, and the two are incompatible on ABI level?

tpm 3 days ago | parent | next [-]

When you are building some app in an ecosystem not entirely managed by you, things like this are bound to happen, so there are always ways to solve this.

You use Foo1 in Project1 (= one pom.xml) and create Project2 (=second pom.xml) where you use Foo2 (but package it in such a way that Foo2 is not exported from Project2), and depending on the usecase create a thin wrapper which you can then use from Project1, as an absolute worst case.

jameslars 4 days ago | parent | prev | next [-]

Notably, a lockfile does not solve this problem either.

omcnoe 3 days ago | parent [-]

True, but the lockfile is imposed at build time. Swapping out the version of a transitive dependency might build totally fine, but also might result is broken behaviour at runtime if the behaviour of the dependency changed.

Muromec 4 days ago | parent | prev [-]

Then you sit and cry of course