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: [email protected] For additional commands, e-mail: [email protected]
