OSGI is one way to solve this problem, but it is rarely worth the effort. It requires adding lots of meta data to every dependency which only a few major libraries actually provide. There are some tools to help with this process but they dont generally work with dynamic languages. Honestly, unless you know someone that has significant experience with OSGi, you will spend far more time trying to get everything working under OSGi than it would take to update the library with the old dependency to work with the latest version of the shared dependency - providing of course the source is available, and one of the reasons I avoid closed source libraries whenever possible. Even still running multiple versions of the same jar in osgi is still not ideal and can cause other issues. You can also implement you own classloaders, which is basically how OSGi is implemented, but much less painful then OSGi.
Gradle is just a build tool, it will basically just select the newest version of the shared dependency. It will not help them coexist. If updating the library is not an option or to overwelming, then the next best thing is to create a seperate application for the old library and use ipc of some sort such as a rest api to allow the libraries to collaberate yet live in separate jvms. -- You received this message because you are subscribed to the Google Groups "Clojure" group. To post to this group, send email to clojure@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from this group, send email to clojure+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/clojure?hl=en