------ Sharing Assembly Descriptors ------ Dennis Lundberg ------ 2010-11-08 ------ ~~ Licensed to the Apache Software Foundation (ASF) under one ~~ or more contributor license agreements. See the NOTICE file ~~ distributed with this work for additional information ~~ regarding copyright ownership. The ASF licenses this file ~~ to you under the Apache License, Version 2.0 (the ~~ "License"); you may not use this file except in compliance ~~ with the License. You may obtain a copy of the License at ~~ ~~ http://www.apache.org/licenses/LICENSE-2.0 ~~ ~~ Unless required by applicable law or agreed to in writing, ~~ software distributed under the License is distributed on an ~~ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY ~~ KIND, either express or implied. See the License for the ~~ specific language governing permissions and limitations ~~ under the License. ~~ NOTE: For help with the syntax of this file, see: ~~ http://maven.apache.org/doxia/references/apt-format.html Sharing Assembly Descriptors So you have created an assembly descriptor that you feel is so good that you want to share it between several of your projects. The simplest way to solve this problem is to create a separate project for your assembly descriptor. Let's call the project . <> This example has been updated for version 2.2. The previous versions of this example were wrong. You must follow the steps below to make your shared assembly descriptors work with version 2.2 or later. * The Shared Assembly Descriptor Project Here's what the directory structure for that project looks like: +---+ my-assembly-descriptor +-- src | `-- main | `-- resources | `-- assemblies | `-- myassembly.xml `-- pom.xml +---+ There are just two files in this project: your assembly descriptor <<>> and a <<>>. <> Your assembly descriptors must be in the directory <<>> to be available to the Assembly Plugin. First let's check out the POM for the Shared Assembly Descriptor Project. It is quite simple: +---+ 4.0.0 your.group.id my-assembly-descriptor 1.0-SNAPSHOT Shared Assembly Descriptor +---+ Next let's look at our shared assembly descriptor. This is just an example. Replace it with the assembly descriptor you want to share. +---+ my-assembly-descriptor-id jar pom.xml true src true +---+ Run '<<>>' on this project to install the Shared Assembly Descriptor project into your local repository. * The Project Using the Shared Assembly Descriptor In the project that wants to use our Shared Assembly Descriptor, you need to add <<>> as a dependency on the Assembly Plugin. This makes our assembly descriptor available for the Assembly Plugin to use. <> You need to use the file name of your assembly descriptor, without the xml file extension, in <<<\>>>. You can not use the id of your assembly descriptor. The assembly descriptor used in this example have the file name <<>>, but its id is <<>>. Therefor we use <<>> to reference that assembly descriptor. +---+ your.group.id my-project 1.0-SNAPSHOT 4.0.0 ... maven-assembly-plugin ${project.version} your.group.id my-assembly-descriptor 1.0-SNAPSHOT make-assembly package single myassembly ... ... +---+