Stop doing shade and uberjars? Seriously look at using plain dependency management and your life should be a lot easier. Your case is complicated so maybe shade is your only option.
Plain dependencies will enable you to spot collisions easily and to manage/lock down versions and use enforcer to help that. Can you make your data processing independent of its runtime (batch or realtime)? Alternatively you could patch Map/Reduce and hadoop to bump the asm libs to 4.x to align your versions. On Thu, Nov 22, 2012 at 2:03 PM, Ron Wheeler <rwhee...@artifact-software.com> wrote: > It looks a bit complex for my taste but it seems that "excludes" on > transitive dependencies should eliminate at least one of your problems. > > Ron > > > On 21/11/2012 6:07 PM, danehammer wrote: >> >> I have two uberjars that I build with the maven-shade-plugin, we'll call >> them >> "batch" and "realtime". They have a set of common dependencies that I want >> to keep in sync (our data processing jars). But they have dependencies >> themselves that are completely different between these two jars runtimes. >> Sometimes there is an intersection between their runtime's dependencies, >> and >> the data processing dependencies. That has to be managed and tested. >> >> What's a best practice, or just an approach others have tried, for >> lessening >> the likelihood that I have issues down the road? I need the data >> processing >> jars to stay in sync of course, and that's easy. But when those jars >> dependencies (that is, my uberjars' transitive dependencies) intersect >> with >> the uberjar's runtime's dependencies, I can have issues. >> >> If a more concrete example helps here it is. My data processing >> dependencies >> are running in two runtimes, batch processing (Map/Reduce) and realtime >> processing (storm). Map/Reduce, with one of its hadoop libs, uses asm 3.x. >> Storm depends on kryo, which uses asm 4.x. This could be managed >> separately >> maybe, but it gets even more fun when one of my data processing >> dependencies >> uses groovy 2.x, which uses asm 4.x. >> >> >> >> -- >> View this message in context: >> http://maven.40175.n5.nabble.com/When-to-manage-transitive-dependencies-tp5732405.html >> Sent from the Maven - Users mailing list archive at Nabble.com. >> >> --------------------------------------------------------------------- >> To unsubscribe, e-mail: users-unsubscr...@maven.apache.org >> For additional commands, e-mail: users-h...@maven.apache.org >> >> > > > -- > Ron Wheeler > President > Artifact Software Inc > email: rwhee...@artifact-software.com > skype: ronaldmwheeler > phone: 866-970-2435, ext 102 > > > > --------------------------------------------------------------------- > To unsubscribe, e-mail: users-unsubscr...@maven.apache.org > For additional commands, e-mail: users-h...@maven.apache.org > --------------------------------------------------------------------- To unsubscribe, e-mail: users-unsubscr...@maven.apache.org For additional commands, e-mail: users-h...@maven.apache.org