The Assembly plugin provides enough flexibility to solve many problems in a number of different ways. If your project has a unique requirement, there’s a good chance that you can use the methods documented in this chapter to achieve almost any assembly structure. This section of the chapter details some common best practices that, if adhered to, will make your experiences with the Assembly plugin more productive and less painful.
Up till now, we’ve been talking mainly about one-off solutions for building a particular type of assembly. But what do you do if you have dozens of projects that all need a particular type of assembly? In short, how can we reuse the effort we’ve invested to get our assemblies just the way we like them across more than one project without copying and pasting our assembly descriptor?
The simplest answer is to create a standardized, versioned
artifact out of the assembly descriptor, and deploy it. Once that’s
done, you can specify that the Assembly plugin section of your
project’s POM include the
assembly-descriptor artifact as a
plugin-level dependency, which will prompt Maven
to resolve and include that artifact in the plugin’s classpath. At that point, you
can use the assembly descriptor via the
descriptorRefs configuration section
in the Assembly plugin declaration. To illustrate, consider this
example assembly descriptor:
<assembly> <id>war-fragment</id> <formats> <format>zip</format> </formats> <includeBaseDirectory>false</includeBaseDirectory> ...