blob: ee085f2a9baeef26cb0dfead5763691329d8010c [file] [log] [blame]
------
Usage
------
Stephane Nicoll
<snicoll@apache.org>
------
2010-12-23
~~ Copyright 2006 The Apache Software Foundation.
~~
~~ Licensed 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
Usage
To handle archiving this version of Maven EAR Plugin uses
{{{http://maven.apache.org/shared/maven-archiver/index.html}Maven Archiver}} ${mavenArchiverVersion}.
To handle filtering this version of Maven EAR Plugin uses
{{{http://maven.apache.org/shared/maven-filtering/index.html}Maven Filtering}} ${mavenFilteringVersion}.
* Introduction
The EAR Plugin allows you to automatically generate the deployment descriptor, e.g.
<<<application.xml>>>. This generation is customizable by the goal's
parameters, see {{{./plugin-info.html}the goals description}}.
* Configuring the EAR Plugin
The configuration of the EAR Plugin is not any different from the configuration
of any other plugin. The configuration should be similar to:
+-----
<project>
[...]
<build>
[...]
<plugins>
[...]
<plugin>
<artifactId>maven-ear-plugin</artifactId>
<version>${project.version}</version>
<configuration>
<!-- configuration elements goes here -->
</configuration>
</plugin>
[...]
</project>
+-----
When configuring the EAR Plugin in your <<<pom.xml>>>, you do not declare an
<<<\<executions\>>>> element in it because it is always invoked at least once
during the <<<package>>> phase of an <<<ear>>> project.
* Executing and Generating your EAR Package
The EAR Plugin replaces the JAR Plugin when your project <<<\<packaging\>>>> is
<<<ear>>>. So to generate your EAR package, you need only call the <<<package>>>
phase like this:
+-----
mvn package
+-----
* Copying resources
The default resource directory for an EAR is <<<src/main/application>>> as
defined by the <<<earSourceDirectory>>> parameter. The content of this
directory may be filtered if necessary using the <<<filtering>>> parameter.
For more details, have a look at the examples.
* Advanced Configuration
Any EAR module might be further customized as follows:
* <<bundleDir>>: the directory in the EAR structure where the artifact will be
stored.
* <<bundleFileName>>: the name of the artifact in the EAR structure.
* <<uri>>: the complete path in the EAR structure for the artifact.
* <<excluded>>: excludes the artifact from the generated EAR.
* <<unpack>>: unpack the artifact in the generated EAR.
The context root of a Web module might be customized using the <<<contextRoot>>>
parameter.
Please note that third party libraries (i.e. JarModule) are not included
in the generated <<<application.xml>>> (only <<<ejb-client>>> should be included in
a <java> entry). However, a <<<jar>>> dependency could be included in the
generated <<<application.xml>>> by specifying the <<<includeInApplicationXml>>> flag.
It is also possible to specify a default bundle directory for all third party
libraries by specifying the <<<defaultLibBundleDir>>> parameter.
The security settings might be specified under the <<<security>>> parameter.
The artifact types that should be unpacked by default can be specified
using the <<<unpackTypes>>> parameter.
The file name mapping to use for artifacts stored in the EAR can be specified
using the <<<fileNameMapping>>> parameter. Valid values for this parameter
are <<<standard>>> (default), <<<full>>>, <<<no-version>>> and
<<<no-version-for-ejb>>>. By specifying <<<full>>> as file name mapping,
artifacts are prefixed by the <<<groupId>>> where dots have been replaced by
dashes. <<<no-version>>> can be used as a replacement of the default mapping;
the only difference is that the version is omitted. <<<no-version-for-ejb>>>
is a specialization that omits the version only for ejb-jars and keeps it for
others ear modules.
For more information on EAR modules, please see the
{{{./modules.html}modules configuration}} page.
You can take a look at the examples for more information on these advanced
configurations.
* JBoss support
The EAR Plugin can generate the <<<jboss-app.xml>>> automatically. To do so, the <<<\<jboss\>>>>
element must be configured and takes the following child elements:
* <<version>>: the targeted JBoss version to use, 3.2, 4, 4.2 or 5 (the default is 4).
* <<library-directory>>: the directory where libraries can be found in the EAR (JBoss 4.2+ only).
* <<security-domain>>: the JNDI name of the security manager (JBoss 4+ only).
* <<unauthenticated-principal>>: the unauthenticated principal (JBoss 4+ only).
* <<loader-repository>>: the name of the UnifiedLoaderRepository MBean to use for the EAR to provide
ear level scoping of classes deployed in the ear. It can have a <<loaderRepositoryClass>> attribute
that defines the class loader repository class to use.
* <<loader-repository-config>>: the class loader repository configuration. If no <<loader-repository>>
element is defined, a default one is added. It can have a <<configParserClass>> attribute that defines
the class loader's configuration parser class to use.
The POM snippet below fully configures the following loader repository
+-----
<loader-repository loaderRepositoryClass='dot.com.LoaderRepository'>
dot.com:loader=unique-archive-name
<loader-repository-config configParserClass='dot.com.LoaderParser'>
java2ParentDelegation=true
</loader-repository-config>
</loader-repository>
+-----
+-----
<configuration>
<jboss>
[...]
<loader-repository loaderRepositoryClass="dot.com.LoaderRepository">
dot.com:loader=unique-archive-name
</loader-repository>
<loader-repository-config configParserClass="dot.com.LoaderParser">
java2ParentDelegation=true
</loader-repository-config>
</jboss>
</configuration>
+-----
* <<jmx-name>>: the object name of the EAR MBean.
* <<module-order>>: specify the order in which the modules specified in the <<<application.xml>>> file gets loaded (JBoss 4.2+ only).
* <<data-sources>>: specify the desired data source(s) to add into the <<<jboss-app.xml>>>, usage is as follows:
+-----
<configuration>
<jboss>
[...]
<data-sources>
<data-source>main-ds.xml</data-source>
<data-source>config/secondary-ds.xml</data-source>
[...]
</data-sources>
</jboss>
</configuration>
+-----
Hibernate archives (HAR) and Service archives (SAR) will be recognized automatically
and added the the <<<jboss-app.xml>>> file.
You can take a look at the examples for more information on the JBoss support.