I have projects A, B, C, and D. A is basically a database API that a variety of projects use. B depends on A, C depends on B and A, and D depends on C and A. When building project D, I could therefore theoretically end up with as many as three different versions of A - one each from the transitive dependencies of B and C, and another one from D's explicit dependency. What I want is for D to include the "latest" version of A based on these three dependencies, so if B depends on A-3.1, C depends on A-3.3, and D depends on A-3.2, the actual artifact on D's classpath will be A-3.3. Obviously exclusions and optional dependencies don't really do what I want, because I don't know which dependency on A is the "latest". Is there a way to do anything remotely like this?
(Obviously, yes, I'm now aware that if this project were designed correctly, there wouldn't be this web of transitive dependencies in the first place, but fixing that isn't really possible at the moment.) -- C. Benson Manica [email protected]
