<div dir="ltr">Hi Robert, <div><br><div>If you are familiar with the architecture, perhaps you can give me some hints where to intervene. The behavior I want is:</div><div><br></div><div>Assume I load a system at top-level and sprinkled in it or its dependencies there are a number of <span style="font-family:monospace,monospace;font-size:12.8px">:mvn-modules </span>as described earlier.</div><div>During preparation, the dependencies, exclusions, and managed-dependencies are collected at the level of the top-level system. </div><div>Then, before any lisp or other files are loaded a single call is made to compute the combined maven dependencies and they are resolved and added to the classpath.</div><div>Finally the rest of the load goes as it usually does, although the :mvn-module components compile and loads are no-ops since their work has already been done up-front.</div><div><br></div><div>Thanks,</div><div>Alan</div></div></div><div class="gmail_extra"><br><div class="gmail_quote">On Fri, Apr 7, 2017 at 5:48 PM, Robert Goldman <span dir="ltr"><<a href="mailto:rpgoldman@sift.net" target="_blank">rpgoldman@sift.net</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><span class="">On 4/7/17 Apr 7 -4:06 PM, Alan Ruttenberg wrote:<br>
><br>
> On Fri, Apr 7, 2017 at 4:27 PM, Alan Ruttenberg<br>
</span><span class="">> <<a href="mailto:alanruttenberg@gmail.com">alanruttenberg@gmail.com</a> <mailto:<a href="mailto:alanruttenberg@gmail.com">alanruttenberg@gmail.<wbr>com</a>>> wrote:<br>
><br>
>     It doesn't address what to do about potentially conflicting maven<br>
>     artifacts loaded by distinct asdf systems.<br>
><br>
><br>
</span><span class="">> Here's one approach.<br>
><br>
> :managed-dependencies are specifications of  versions that should take<br>
> precedence over versions that are in the transitive closure of some<br>
> dependency.<br>
><br>
> As each asdf system which has used maven dependencies computes its set<br>
> of satisfying dependencies, the particular versions chosen become<br>
> default managed-dependencies for subsequent systems. If two managed<br>
> dependencies conflict (e.g. I include a  version 1.1 as managed<br>
> dependency in system A, which is loaded. Subsequently system B specifies<br>
> version 1.2 as a managed dependency, then an error is signaled.<br>
> Many times this can be fixed by modifying the specification of the<br>
> managed dependency to be looser, and changing the order of loaded systems.<br>
><br>
> I think moving this into the planning phase is probably the right thing.<br>
> I'm just not familiar enough with asdf's model to whip up a solution.<br>
> Hopefully asdf's planning runs over all systems that are depended on<br>
> before loading anything, in which case I think this will be a viable<br>
> solution, module the case of conflicting managed dependencies, or<br>
> dependency hell you would arrive at if you were using maven alone.<br>
<br>
</span>Yes, ASDF has a "plan, then execute" model of operation, so it won't<br>
load anything until inspecting all the systems involved.<br>
<br>
</blockquote></div><br></div>