<html><head></head><body class="ApplePlainTextBody" dir="auto" style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;">Are uber jars really that useful? From my own experience they often get more in the way, e.g. clash of dependencies. We can fix our own clashes but once you have other modules creating uber jars users might get more of those clashes.<br><br>Regardless of that, if we're continue with uber jars, it'd make sense to provide individual jars too, particularly when you want more finer grained dependency resolution.<br><br>Cheers,<br>--<br>Galder Zamarreño<br>Infinispan, Red Hat<br><br><blockquote type="cite">On 7 Mar 2016, at 16:31, Sebastian Laskawiec &lt;slaskawi@redhat.com&gt; wrote:<br><br>Hey!<br><br>Uber jars have been around for quite a while but some old problems are still biting our ankles. The biggest problem is JBoss Logging... But before diving into the technical discussion, I would like to clarify how do we treat Uber Jars and how other (let's call them "extra") modules should integrate with them...<br><br>How Uber Jars look like:<br><span class="Apple-tab-span" style="white-space:pre">        </span>• All Uber Jar dependencies are declared as:<br><span class="Apple-tab-span" style="white-space:pre">        </span><span class="Apple-tab-span" style="white-space:pre">        </span>• provided - those are APIs which should be available on your container<br><span class="Apple-tab-span" style="white-space:pre">        </span><span class="Apple-tab-span" style="white-space:pre">        </span>• optional - all other dependencies<br><span class="Apple-tab-span" style="white-space:pre">        </span><span class="Apple-tab-span" style="white-space:pre">        </span>• compile - JTA (I'm not sure why, but probably because this is a required API). I think it should be changed to provided at some point.<br><span class="Apple-tab-span" style="white-space:pre">        </span>• Uber Jars have (almost) no dependencies (apart from JTA)<br><span class="Apple-tab-span" style="white-space:pre">        </span>• Uber Jars contain everything to get a standard application running with ISPN in a single jar<br>Now the biggest question is how to integrate other extra modules with them - for example Spring or Cache Stores? Here are the options:<br><span class="Apple-tab-span" style="white-space:pre">        </span>• Not integrate at all... users should use standard (small) jars in such use cases<br><span class="Apple-tab-span" style="white-space:pre">        </span><span class="Apple-tab-span" style="white-space:pre">        </span>• This one has a big impact on our users, so I would assume no<br><span class="Apple-tab-span" style="white-space:pre">        </span>• All extra modules should shade everything they need and provide their own Uber Jars (like Spring Uber Jar = ISPN Core + Spring)<br><span class="Apple-tab-span" style="white-space:pre">        </span><span class="Apple-tab-span" style="white-space:pre">        </span>• This one might be really hard to maintain, so I would also vote for no.<br><span class="Apple-tab-span" style="white-space:pre">        </span>• All extra modules should integrate with small jars and Uber Jars (but not both at the same time). An example application might want to add Spring-embedded and Infinispan-embedded to it's classpath and it's ready to go. Alternatively it could add Spring-embedded + infinispan-core + whatever is needed. Adding both infinispan-embedded and infinispan-core is prohibited.<br><span class="Apple-tab-span" style="white-space:pre">        </span><span class="Apple-tab-span" style="white-space:pre">        </span>• Easy for the users, a bit harder for us. My vote goes here.<br>Could you please share some thoughts whether this makes sense or not? Once we achieve common understanding - I'll propose some technical solutions.<br><br>Thanks<br>Sebastian<br><br>_______________________________________________<br>infinispan-dev mailing list<br>infinispan-dev@lists.jboss.org<br>https://lists.jboss.org/mailman/listinfo/infinispan-dev<br></blockquote><br></body></html>