On 4/7/17 Apr 7 -4:06 PM, Alan Ruttenberg wrote:
On Fri, Apr 7, 2017 at 4:27 PM, Alan Ruttenberg <alanruttenberg@gmail.com mailto:alanruttenberg@gmail.com> wrote:
It doesn't address what to do about potentially conflicting maven artifacts loaded by distinct asdf systems.
Here's one approach.
:managed-dependencies are specifications of versions that should take precedence over versions that are in the transitive closure of some dependency.
As each asdf system which has used maven dependencies computes its set of satisfying dependencies, the particular versions chosen become default managed-dependencies for subsequent systems. If two managed dependencies conflict (e.g. I include a version 1.1 as managed dependency in system A, which is loaded. Subsequently system B specifies version 1.2 as a managed dependency, then an error is signaled. Many times this can be fixed by modifying the specification of the managed dependency to be looser, and changing the order of loaded systems.
I think moving this into the planning phase is probably the right thing. I'm just not familiar enough with asdf's model to whip up a solution. Hopefully asdf's planning runs over all systems that are depended on before loading anything, in which case I think this will be a viable solution, module the case of conflicting managed dependencies, or dependency hell you would arrive at if you were using maven alone.
Yes, ASDF has a "plan, then execute" model of operation, so it won't load anything until inspecting all the systems involved.