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

Reply via email to