blob: 19fc6f81c5da222e3f95152e2d24404f089d1cab [file] [log] [blame]
<?xml version="1.0" encoding="UTF-8"?>
<!--
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.
-->
<faqs xmlns="http://maven.apache.org/FML/1.0.1"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/FML/1.0.1 http://maven.apache.org/xsd/fml-1.0.1.xsd"
id="FAQ" title="Frequently Asked Questions">
<part id="General">
<faq id="filtering">
<question>How is filtering done in the WAR plugin?</question>
<answer>
<p>To enable filtering of <code>web.xml</code> you must configure the WAR Plugin like this:
<source><![CDATA[
<plugin>
<artifactId>maven-war-plugin</artifactId>
<version>${project.version}</version>
<configuration>
<filteringDeploymentDescriptors>true</filteringDeploymentDescriptors>
</configuration>
</plugin>
]]></source>
</p>
<p>Examples can be found <a href="examples/adding-filtering-webresources.html">here</a>.</p>
</answer>
</faq>
<faq id="classifieruse">
<question>How does the classifier of dependency artifacts affect my WAR project?</question>
<answer>
<p>When used, the copy of the dependency artifact in your project will have the classifier appended to its
filename. This can be used to differentiate duplicate artifacts.</p>
</answer>
</faq>
<faq id="transitiveexclude">
<question>How do I exclude transitive dependencies from my project?</question>
<answer>
<p>Give it a "provided" scope.</p>
</answer>
</faq>
<faq id="dependentwarexclude">
<question>What's the difference between using dependentWarExclude and provided scope?</question>
<answer>
<p><code>dependentWarExclude</code> is used in <a href="overlays.html">overlays</a> for excluding dependent
WAR files from the assembled webapp.</p>
</answer>
</faq>
<faq id="webresourcesexclude">
<question>How do I exclude files in my web resources?</question>
<answer>
<p>Use the <code>&lt;webResources&gt;</code> / <code>&lt;exclude&gt;</code> parameter to identify the tokens to exclude.</p>
<p>For more information refer to <a href="examples/adding-filtering-webresources.html">Adding and Filtering
External Web Resources</a>.</p>
</answer>
</faq>
<faq id="waroverlaysexclude">
<question>How do I exclude files when doing overlays?</question>
<answer>
<p>Use the <code>dependentWarExcludes</code> parameter to identify the tokens to exclude.</p>
</answer>
</faq>
<faq id="configurationdoc">
<question>Where can I find the documentation for the plugin's configuration?</question>
<answer>
<p>
For each goal, you can use the documentation from the <a href="plugin-info.html">plugin site</a>.
</p>
<p>
If you need a specific version, generate it using <code>mvn site:site</code> or use:
<source><![CDATA[
mvn help:describe -Dplugin=war -Dfull=true -Dversion=<your-plugin-version-here>
]]></source>
</p>
</answer>
</faq>
<faq id="attached">
<question>How do I create a JAR containing the classes in my webapp?</question>
<answer>
<p>If you would simply like to package the classes and resources as a JAR in <code>WEB-INF/lib</code>
rather than as loose files under <code>WEB-INF/classes</code>, use the following configuration:</p>
<p>
<source><![CDATA[
<plugin>
<artifactId>maven-war-plugin</artifactId>
<version>${project.version}</version>
<configuration>
<archiveClasses>true</archiveClasses>
</configuration>
</plugin>
]]></source>
</p>
<p>If you need to re-use this JAR in another project, the recommended approach is to move the classes to a
separate module that builds a JAR, and then declare a dependency on that JAR from your webapp as well as from
any other projects that need it.</p>
<p>If you can't move the classes to another project, you can deploy the classes and resources included in
your webapp as an "attached" artifact, with a classifier, by using the following configuration:</p>
<p>
<source><![CDATA[
<project>
...
<artifactId>mywebapp</artifactId>
<version>1.0-SNAPSHOT</version>
...
<build>
<plugins>
<plugin>
<artifactId>maven-war-plugin</artifactId>
<version>${project.version}</version>
<configuration>
<attachClasses>true</attachClasses>
</configuration>
</plugin>
</plugins>
</build>
...
</project>
]]></source>
</p>
<p>This will result in two artifacts being deployed: <code>mywebapp-1.0-SNAPSHOT.war</code>
and <code>mywebapp-1.0-SNAPSHOT-classes.jar</code>.</p>
</answer>
</faq>
</part>
</faqs>