Sometimes you want to be able to run a Java application as a single JAR and then you need a JAR that contains everything, but at the same time you want to be able to also use it as part of a larger project. How would you deal with a situation like that? Well, with Maven the recipe below would make it possible.
<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-shade-plugin</artifactId> <version>2.4.3</version> <executions> <execution> <phase>package</phase> <goals> <goal>shade</goal> </goals> <configuration> <shadedArtifactAttached>true</shadedArtifactAttached> <shadedClassifierName>all</shadedClassifierName> <transformers> <transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer"> <mainClass>com.mycompany.myproduct.Main</mainClass> </transformer> </transformers> </configuration> </execution> </executions> </plugin>
And voila you have the 2 JARs you wanted.
Posted October 13, 2016