I'd encourage the Shade plugin as a nice repeatable pattern that does away with handmade assembly descriptors. It also has the benefit of giving you an avenue to work out things that can't be so cleanly thrown together. Most notably, if you use Spring or Apache CXF, there are often similarly named config files that need to be untangled. Otherwise the build keeps overwriting the same files