 ------
 Maven 2 Assembly Plugin 
 ------
 Maven Development Team
 <dev@maven.apache.org>
 ------
 September 20, 2005

Introduction

 Want to create a binary distribution from a Maven project that includes supporting 
 scripts, configuration files, and all runtime dependencies?  You need to use the assembly 
 plugin to create a distribution for your project.

 This plugin generates "assemblies". It is the equivalent of the 
 Maven 1 distribution plug-in.  This plugin provides the capability to create binary 
 and source distributions.  These distributions (assemblies) are defined using
 an assembly descriptor.  You can {{{assembly.html}write your own description}} to create a custom assembly,
 or you can reuse one of the {{{descriptor.html}three pre-defined assemblies}}.

 Currently it can create distribution formats such as: zip, tar.bz, tar.gz2, and jar.

 To use the assembly plugin in Maven 2, you simply need to:
 
   * configure the assembly in pom.xml, 
 
   * write an assembly descriptor, and
 
   * run "mvn assembly:assembly"  
   
 For a more detailed, step-by-step 
 introduction to the assembly plugin, read this {{{howto.html}HOW-TO}}.
 
 To write your own custom assembly, you will need to refer to the {{{assembly.html}Assembly
 Descriptor Format}} reference.
 
What is an Assembly?

 An "assembly" is a group of files, directories, and dependencies that is assembled into an 
 archive format and distributed.  For example, assume that a Maven project defines a single 
 JAR artifact that contains both a console application and a Swing application.  Such a 
 project could define two "assemblies" that bundle the application with a different set of 
 supporting scripts and dependency sets.  One assembly would be the assembly for the 
 console application, and the other assembly could be a Swing application bundled 
 with a slightly different set of dependencies.  
 
 This assembly plugin provides a descriptor format which allows you to define an arbitrary
 assembly of files and directories from a project.  For example, if your Maven 2 project contains
 the directory "src/main/bin", you can instruct the assembly plugin to copy the contents of this 
 directory to the "bin" directory of an assembly and to change the permissions of the files in
 the "bin" directory to UNIX mode 755.  The parameters for configuring this behavior are supplied
 to the assembly plugin by way of the {{{assembly.html}assembly descriptor}}.

Goal Overview

 An overview of the assembly plugin's goals can be found {{{index.html}here}}.
 To create a binary distribution for a project, use the {{{index.html}"assembly:assembly"}} goal.  
 To extract all project dependencies on certain working directory, use the {{{index.html}"assembly:unpack"}}.
