Maven and ABCL

Alan Ruttenberg alanruttenberg at gmail.com
Fri Apr 7 23:15:59 UTC 2017


Hi Robert,

If you are familiar with the architecture, perhaps you can give me some
hints where to intervene. The behavior I want is:

Assume I load a system at top-level and sprinkled in it or its dependencies
there are a number of :mvn-modules as described earlier.
During preparation, the dependencies, exclusions, and managed-dependencies
are collected at the level of the top-level system.
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.
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.

Thanks,
Alan

On Fri, Apr 7, 2017 at 5:48 PM, Robert Goldman <rpgoldman at sift.net> wrote:

> On 4/7/17 Apr 7 -4:06 PM, Alan Ruttenberg wrote:
> >
> > On Fri, Apr 7, 2017 at 4:27 PM, Alan Ruttenberg
> > <alanruttenberg at gmail.com <mailto:alanruttenberg at 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.
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://mailman.common-lisp.net/pipermail/armedbear-devel/attachments/20170407/952ef1d9/attachment.html>


More information about the armedbear-devel mailing list