On 4/18/17 04:14, Alan Ruttenberg wrote: […]
There is OSGI which is able to do this sort of thing, and there is already prototype code in JSS to use it. However OSGI, or multiple classloaders, needs a fair amount of thought to use correctly, because you can easily arrive at situations where compatible classes can't be used because they were loaded into different classloaders.
The first step is to enable managing dependencies when it *is* possible to run without conflicts, as with the :mvn-module I showed above. In this case it turns out that the dependencies only *seemed* to conflict. With the appropriate use of Maven there is no conflict in this case.
The thing that is different in our environment as compared to the standard maven situation is that we don't have a central pom for an application that gathers all dependencies and resolves them at once. Instead we have separate ASDF systems which are loaded independently and yet may have intertwined dependencies.
I agree that incrementally fixing the current situation along the lines you have prototyped should occur before any dramatic overhaul with segregated classloaders.
Currently, I am working towards a [abcl-1.5.0][] next week with the following priorities:
1) stabilizing support for Java6 (dropping support for Java5, which in practice given the absence of an open Java6 VM doesn't exist)
2) Resurrect the ABCL-BUILD system to build ABCL from Lisp by downloading and installing Ant and Maven as needed.
3) Provide a restart for failure to find Maven, that will download and install it in the XDG filesystem.
[abcl-1.5.0]: http://abcl.org/trac/milestone/1.5.0
Maybe we can try to squeeze your :MVN-MODULE proposal in as well. I've seen [your code that demonstrates the problem][1], but as I understand it there is no exact code as you need more understanding of the underlying ASDF mechanisms, right? If you could take the time in the next day or so to write up the minimal proposal for your current needs, I will see what I can do to take a stab at its implementation.
[1]: https://gitlab.common-lisp.net/abcl/abcl/blob/master/t/resolve-multiple-mave...