<div dir="ltr">Why don&#39;t you just configure shade plugin to use only specified dependencies and exclude everything else?<br></div><div class="gmail_extra"><br><br><div class="gmail_quote">On Fri, Oct 18, 2013 at 5:53 PM, James R. Perkins <span dir="ltr">&lt;<a href="mailto:jperkins@redhat.com" target="_blank">jperkins@redhat.com</a>&gt;</span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div class="im"><br>
On 10/18/2013 06:17 AM, David M. Lloyd wrote:<br>
&gt; On 10/18/2013 07:51 AM, Brian Stansberry wrote:<br>
&gt;&gt;<br>
</div><div class="im">&gt;&gt; Back to my original question then. What problem is this patch solving? I<br>
&gt;&gt; don&#39;t like how maven handles transitive dependencies, but it&#39;s a huge<br>
&gt;&gt; effort to try and fight maven, IMHO not worth it unless it&#39;s solving a<br>
&gt;&gt; specific problem.<br>
</div>The original problem I saw just just the logmanager leaking into the<br>
shaded client jars. When I ran the dependency tree I noticed just about<br>
every core module had a transitive dependency on the logmanager. It got<br>
me thinking about what else might be leaked in and it sounds like I had<br>
misunderstood what David meant. End result, nothing to see here move<br>
along. :)<br>
<div class="im">&gt;&gt;<br>
&gt;&gt; The server-side runtime dependencies are controlled via the module.xml<br>
&gt;&gt; files, which, thankfully, have a sane approach to dependency management.<br>
&gt;&gt; So I think we only need to worry about runtime for the few things where<br>
&gt;&gt; the pom is actually relevant to runtime; stuff like<br>
&gt;&gt; model-controller-client or the client jar poms.<br>
&gt;&gt;<br>
&gt;&gt; BTW, please don&#39;t take my responses as being critical of the patch or<br>
&gt;&gt; the thread. You&#39;re correctly asking the same questions I am -- &quot;is this<br>
&gt;&gt; worth it?&quot;<br>
&gt; Well I feel like I should clarify something.  When I originally started<br>
&gt; the &quot;exclude everything&quot; policy, I was only excluding dependencies<br>
&gt; *from* dependencies, not from the core modules.  I don&#39;t think adding<br>
&gt; exclusions in dependencies on core modules buys anything because they<br>
&gt; themselves already have exclusions for things.<br>
</div>Makes sense. I do think I will add exclusions to core modules that use<br>
the logmanager. I don&#39;t think there are any other dependencies that<br>
really matter if they leak in, but one less choice of a Logger when<br>
auto-completing in an IDE might be nice.<br>
<div class="im">&gt;<br>
&gt;&gt;&gt;&gt; I so pray for the day when Maven finally just has reasonable flags to turn off transitive dependencies.<br>
&gt;&gt;&gt; That would be awesome. Like a compile scope that actually means, I don&#39;t know compile not runtime :)<br>
&gt; That&#39;s called &quot;provided&quot;.<br>
</div>Yeah, it&#39;s just not as intuitive as compile time and bites people all<br>
the time. For example looking through the pom&#39;s I found a few spots<br>
where jboss-logging was marked as provided when it should likely not be<br>
since it is required at runtime. I&#39;ve also seen cases where the logging<br>
tooling wasn&#39;t marked as provided when it should be since it&#39;s only<br>
needed at compile time :)<br>
<div class="HOEnZb"><div class="h5">&gt;<br>
&gt;&gt;&gt;&gt; On 10/17/13 9:40 PM, James Perkins wrote:<br>
&gt;&gt;&gt;&gt;&gt; Yes that was basically the idea. The main benefit is dependencies, like the log manager, won&#39;t leak into projects that shouldn&#39;t use them. It might be more work than it&#39;s worth.<br>
&gt;&gt;&gt;&gt;&gt; --<br>
&gt;&gt;&gt;&gt;&gt; James R. Perkins<br>
&gt;&gt;&gt;&gt;&gt; JBoss by Red Hat<br>
&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt; Brian Stansberry &lt;<a href="mailto:brian.stansberry@redhat.com">brian.stansberry@redhat.com</a>&gt; wrote:<br>
&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt; Can you explain more as to what this patch is doing? Partly it seems to<br>
&gt;&gt;&gt;&gt;&gt; be directly declaring some dependencies in WF modules instead of having<br>
&gt;&gt;&gt;&gt;&gt; them coming in transitively from other WF modules. Which is ok by me if<br>
&gt;&gt;&gt;&gt;&gt; the module directly imports classes from the dependency. But I don&#39;t<br>
&gt;&gt;&gt;&gt;&gt; know what practical difference this change makes.<br>
&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt; I don&#39;t get (or like) the exclusions in the main pom.xml at all.<br>
&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt; On 10/17/13 8:06 PM, James R. Perkins wrote:<br>
&gt;&gt;&gt;&gt;&gt;&gt; Debugging a TCK issue I found that the client jars that shade in their<br>
&gt;&gt;&gt;&gt;&gt;&gt; dependencies were also pulling in the logmanager transitively from a<br>
&gt;&gt;&gt;&gt;&gt;&gt; couple dependencies. This led to look at what else was coming in<br>
&gt;&gt;&gt;&gt;&gt;&gt; transitively and realized, as we probably already know, it goes deep.<br>
&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt; I started making some changes [1] after talking to David (which I may<br>
&gt;&gt;&gt;&gt;&gt;&gt; have misunderstood so don&#39;t blame him :)) to exclude dependencies for<br>
&gt;&gt;&gt;&gt;&gt;&gt; WildFly maven modules. I&#39;m not really close to be done as it seems this<br>
&gt;&gt;&gt;&gt;&gt;&gt; will take quite a while. The question is do we even want to exclude<br>
&gt;&gt;&gt;&gt;&gt;&gt; dependencies like this? If I continued and did a PR would it be<br>
&gt;&gt;&gt;&gt;&gt;&gt; accepted? I have a feeling it&#39;s going to be quite massive.<br>
&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt; [1]: <a href="https://github.com/jamezp/wildfly/compare/WFLY-2332" target="_blank">https://github.com/jamezp/wildfly/compare/WFLY-2332</a><br>
&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt; --<br>
&gt;&gt;&gt;&gt;&gt;&gt; James R. Perkins<br>
&gt;&gt;&gt;&gt;&gt;&gt; Red Hat JBoss Middleware<br>
&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt; _______________________________________________<br>
&gt;&gt;&gt;&gt;&gt;&gt; wildfly-dev mailing list<br>
&gt;&gt;&gt;&gt;&gt;&gt; <a href="mailto:wildfly-dev@lists.jboss.org">wildfly-dev@lists.jboss.org</a><br>
&gt;&gt;&gt;&gt;&gt;&gt; <a href="https://lists.jboss.org/mailman/listinfo/wildfly-dev" target="_blank">https://lists.jboss.org/mailman/listinfo/wildfly-dev</a><br>
&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt; --<br>
&gt;&gt;&gt;&gt; Brian Stansberry<br>
&gt;&gt;&gt;&gt; Principal Software Engineer<br>
&gt;&gt;&gt;&gt; JBoss by Red Hat<br>
&gt;&gt;&gt; --<br>
&gt;&gt;&gt; James R. Perkins<br>
&gt;&gt;&gt; JBoss by Red Hat<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt;<br>
&gt;&gt;<br>
&gt;<br>
<br>
--<br>
James R. Perkins<br>
Red Hat JBoss Middleware<br>
<br>
_______________________________________________<br>
wildfly-dev mailing list<br>
<a href="mailto:wildfly-dev@lists.jboss.org">wildfly-dev@lists.jboss.org</a><br>
<a href="https://lists.jboss.org/mailman/listinfo/wildfly-dev" target="_blank">https://lists.jboss.org/mailman/listinfo/wildfly-dev</a><br>
</div></div></blockquote></div><br></div>