-
-
Notifications
You must be signed in to change notification settings - Fork 9
Description
This is essentially a port of a class used in JesterJ to make it more widely available. The basic idea is to alter the classloader delegation scheme. By default classloaders always check the parent first. However an uno-jar is meant to provide a full set of dependencies and so if we encounter an unojar inside /lib we should exhaust all the libraries supplied by that unojar before searching our parent classloaders.
The result will be a get out of jail card for Jar Hell that involves building an uno-jar for at least one of the conflicting libraries. This is useful in JesterJ because it allows User defined code loaded at runtime to opt out of the vast number of dependencies that JesterJ currently relies on.
More generally this capability will allow for modularization of sub-components and eliminate the need to synchronize dependencies across builds and sub-builds. That will of course come with the cost of bloating the fat jar even further.
If this is successful a follow-on feature may seek to enable a recursive exploration of the included libs and uno-jar libs to "pull up" any duplicate dependencies when possible.