blob: fa2a0fb14e65109cfa26c69cdd559cceba2a1ee6 [file] [log] [blame]
------
Maven 2 Assembly Plugin
------
Johnny R. Ruiz III
<jruiz@exist.com>
------
October 16, 2005
How to Use
These are brief examples of how to use the assembly:assembly and assembly:unpack goals.
To use the assembly:assembly goal, you must define the descriptor file that you are going to use or
define the descriptorId from the predefined {{{descriptor.html}descriptor ids}}.
* How To use assembly:assembly using a customized descriptor file.
-----
mvn assembly:assembly -Ddescriptor=path/to/descriptor.xml
-----
** How to assemble your project with your project modules only.
There may be some situations that you only needed the jars of your project
modules. You may exclude their dependencies but what if you have 10
modules with 10 dependencies each? Isn't it a bit hassle to exclude 100 where
you only needed 10. To achieve this goal, set the "projectModulesOnly"
parameter to true and maven will do it for you.
-----
mvn assembly:assembly -DprojectModulesOnly=true
-----
* How to use assembly:assembly using predefined descriptor ids.
----
mvn assembly:assembly -DdescriptorId=bin
or mvn assembly:assembly -DdescriptorId=jar-with-dependencies
or mvn assembly:assembly -DdescriptorId=src
-----
* How to configure the assembly:assembly plugin in your POM
You can also configure this plugin inside your pom.xml. To run use "mvn assembly:assembly".
-----
<project>
...
<build>
...
<plugins>
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<version>2.0-beta-1</version>
<configuration>
<descriptors>
<descriptor>path/to/descriptor.xml</descriptor>
</descriptors>
<finalName>final_name</finalName>
<outputDirectory>output/directory</outputDirectory>
<workDirectory>target/assembly/work</workDirectory>
</configuration>
</plugin>
</plugins>
...
</build>
...
</project>
-----
* How to use assembly:unpack
After running this goal, all dependencies will be extracted into the location specified in the
\<workDirectory\> element.
-----
mvn assembly:unpack
-----
For full documentation of plugin's goals and parameters, click {{{index.html}here}}.
* How to assemble a repository
The simplest descriptor you can create for assembly a repository would be something like the following:
-----
<assembly>
<id>bin</id>
<formats>
<format>zip</format>
</formats>
<repositories>
<repository>
<outputDirectory>repository</outputDirectory>
</repository>
</repositories>
</assembly>
-----
With no <<<includes>>> or <<<excludes>>> specified all dependencies are used to create a repository. In fact when you
specify no <<<includes>>> the default will be to include them all, but you can still specify <<<excludes>>> if you need
to keep certain artifacts from making it into the repository you're trying to assemble.
By default no repository metadata is generated when the repository is assembled. If you are trying to create a repository
that is going to be used as a remote repository then you will need to have the metadata generated in order to for it
to function properly as a remote repository. To do this just enable repository metadata generation by using the
<<<includeMetadata>>> element:
-----
<assembly>
<id>bin</id>
<formats>
<format>zip</format>
</formats>
<repositories>
<repository>
<outputDirectory>repository</outputDirectory>
<includeMetadata>true</includeMetadata>
</repository>
</repositories>
</assembly>
-----
Keep in mind that any dependencies specified in the POM will have their transitive dependencies placed in the
assembly as well.
* How to reuse assembly's component
There are situations where your project can produce multiple assemblies with the same set of
denpendencySets, fileSets and/or files. Instead of duplicating those elements in all assembly descriptors,
you can refactor them out into common component descriptor(s)
Here is an example of assembly descriptor that uses component descriptor(s)
-----
<assembly>
<id>someid</id>
<formats>
<format>zip</format>
</formats>
<componentDescriptors>
<componentDescriptor>src/main/assembly/component.xml</componentDescriptor>
</componentDescriptors>
</assembly>
-----
and here is an example of component descriptor file
-----
<component>
<dependencySets>
<dependencySet>
....
</dependencySet>
....
</dependencySets>
<fileSets>
<fileSet>
.....
</fileSet>
.....
</fileSets>
<files>
<file>
.....
</file>
</files>
</component>
-----