"Wait.. What?! Are you serious?" "Yes, I am!" "Why do you want to do that?!" That's actually a very interesting question - and it's the usual response I do get if I explain what it's about those weird pictures I post on Facebook about prototyping loudspeakers or drilling 2,560 holes into plywood boards. Also people don't quite understand why I've spent hours and hours with constructing a 3D model of a coffee table. This is a first attempt trying to explain myself why I'm spending my free time for this project since more than 6 months now.
The maven-shade-plugin is a handy plugin which allows you to collect all of your project dependencies - incl. transitive dependencies - and put everything together into a single, shaded jar file. I use this plugin to deliver a Java application as a single jar file containing all needed resources to simplify the application launch descriptor. But sometimes you have more than one Maven project that you want to deliver as a single jar file. And sometimes you even have a parent Maven project that contains a list of dependencies and for each of them you want to create a single jar file. This kind of project setup might lead you to the idea to call the maven-shade-plugin (multiple times) directly from command line to create your jar files which will end up with the follow error message: "You have invoked the goal directly from the command line. This is not supported. Please add the goal to the default lifecycle via an element in your POM and use "mvn package" to have it run.". If you still want to use the plugin and if you're not afraid of bloody hacks than continue reading - otherwise you have to accept this limitation since it's there for a good reason 🙂