Package org.apache.maven.plugins.war
Class AbstractWarMojo
- java.lang.Object
-
- org.apache.maven.plugin.AbstractMojo
-
- org.apache.maven.plugins.war.AbstractWarMojo
-
- All Implemented Interfaces:
org.apache.maven.plugin.ContextEnabled
,org.apache.maven.plugin.Mojo
- Direct Known Subclasses:
WarExplodedMojo
,WarInPlaceMojo
,WarMojo
public abstract class AbstractWarMojo extends org.apache.maven.plugin.AbstractMojo
Contains common jobs for WAR mojos.
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description private class
AbstractWarMojo.DefaultWarPackagingContext
WarPackagingContext default implementation
-
Field Summary
Fields Modifier and Type Field Description private org.apache.maven.archiver.MavenArchiveConfiguration
archive
The archive configuration to use.private boolean
archiveClasses
Whether a JAR file will be created for the classes in the webapp.private org.codehaus.plexus.archiver.manager.ArchiverManager
archiverManager
To look up Archiver/UnArchiver implementations.private org.apache.maven.artifact.factory.ArtifactFactory
artifactFactory
private java.io.File
classesDirectory
The directory containing compiled classes.private java.io.File
containerConfigXML
The path to a configuration file for the servlet container.private Overlay
currentProjectOverlay
private java.util.LinkedHashSet<java.lang.String>
delimiters
Set of delimiters for expressions to filter within the resources.private java.lang.String
dependentWarExcludes
The comma separated list of tokens to exclude when doing a WAR overlay.private java.lang.String
dependentWarIncludes
The comma separated list of tokens to include when doing a WAR overlay.private boolean
escapedBackslashesInFilePath
To escape interpolated values with Windows pathc:\foo\bar
will be replaced withc:\\foo\\bar
.protected java.lang.String
escapeString
Expression preceded with this String won't be interpolated.protected java.lang.Boolean
failOnMissingWebXml
Whether or not to fail the build if theweb.xml
file is missing.private boolean
filteringDeploymentDescriptors
To filter deployment descriptors.private java.util.List<java.lang.String>
filters
Filters (property files) to include during the interpolation of the pom.xml.private boolean
includeEmptyDirectories
private org.codehaus.plexus.archiver.jar.JarArchiver
jarArchiver
The JAR archiver needed for archiving the classes directory into a JAR file under WEB-INF/lib.private org.apache.maven.shared.filtering.MavenFileFilter
mavenFileFilter
private org.apache.maven.shared.filtering.MavenResourcesFiltering
mavenResourcesFiltering
private static java.lang.String
META_INF
private java.util.List<java.lang.String>
nonFilteredFileExtensions
A list of file extensions that should not be filtered.private java.lang.String
outdatedCheckPath
Path prefix for resources that will be checked against outdated content.private java.lang.String
outputFileNameMapping
The file name mapping to use when copying libraries and TLDs.protected java.lang.String
outputTimestamp
Timestamp for reproducible output archive entries, either formatted as ISO 8601yyyy-MM-dd'T'HH:mm:ssXXX
or as an int representing seconds since the epoch (like SOURCE_DATE_EPOCH).private java.util.List<Overlay>
overlays
The overlays to apply.private org.apache.maven.project.MavenProject
project
The Maven project.protected java.lang.String
propertiesEncoding
The character encoding to use when reading and writing filtered properties files.private boolean
recompressZippedFiles
Indicates if zip archives (jar,zip etc) being added to the war should be compressed again.private java.lang.String
resourceEncoding
The encoding to use when copying filtered web resources.private org.apache.maven.execution.MavenSession
session
private boolean
supportMultiLineFiltering
Stop searching endToken at the end of lineprivate boolean
useDefaultDelimiters
Use default delimiters in addition to custom delimiters, if any.private boolean
useJvmChmod
use jvmChmod rather that cli chmod and forking processprivate java.io.File
warSourceDirectory
Single directory for extra files to include in the WAR.private java.lang.String
warSourceExcludes
The comma separated list of tokens to exclude when copying the content of the warSourceDirectory.private java.lang.String
warSourceIncludes
The comma separated list of tokens to include when copying the content of the warSourceDirectory.private static java.lang.String
WEB_INF
private java.io.File
webappDirectory
The directory where the webapp is built.private org.apache.maven.model.Resource[]
webResources
The list of webResources we want to transfer.private java.io.File
webXml
The path to the web.xml file to use.private java.io.File
workDirectory
Directory to unpack dependent WARs into if needed.
-
Constructor Summary
Constructors Constructor Description AbstractWarMojo()
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description void
addOverlay(Overlay overlay)
void
buildExplodedWebapp(java.io.File webapplicationDirectory)
void
buildWebapp(org.apache.maven.project.MavenProject mavenProject, java.io.File webapplicationDirectory)
Builds the webapp for the specified project with the new packaging task thingy.org.apache.maven.archiver.MavenArchiveConfiguration
getArchive()
org.apache.maven.artifact.factory.ArtifactFactory
getArtifactFactory()
java.io.File
getClassesDirectory()
java.io.File
getContainerConfigXML()
Overlay
getCurrentProjectOverlay()
protected java.lang.String[]
getDependentWarExcludes()
Returns a string array of the excludes to be used when adding dependent WAR as an overlay onto this WAR.protected java.lang.String[]
getDependentWarIncludes()
Returns a string array of the includes to be used when adding dependent WARs as an overlay onto this WAR.protected java.lang.String[]
getExcludes()
Returns a string array of the excludes to be used when copying the content of the WAR source directory.java.util.List<java.lang.String>
getFilters()
protected java.lang.String[]
getIncludes()
Returns a string array of the includes to be used when assembling/copying the WAR.org.codehaus.plexus.archiver.jar.JarArchiver
getJarArchiver()
java.util.List<java.lang.String>
getNonFilteredFileExtensions()
java.lang.String
getOutputFileNameMapping()
java.util.List<Overlay>
getOverlays()
private java.util.List<WarPackagingTask>
getPackagingTasks(OverlayManager overlayManager)
Returns aList
of theWarPackagingTask
instances to invoke to perform the packaging.org.apache.maven.project.MavenProject
getProject()
protected org.apache.maven.execution.MavenSession
getSession()
java.io.File
getWarSourceDirectory()
java.lang.String
getWarSourceExcludes()
java.lang.String
getWarSourceIncludes()
java.io.File
getWebappDirectory()
org.apache.maven.model.Resource[]
getWebResources()
java.io.File
getWebXml()
java.io.File
getWorkDirectory()
boolean
isArchiveClasses()
protected boolean
isIncludeEmptyDirectories()
protected boolean
isRecompressZippedFiles()
void
setArchiveClasses(boolean archiveClasses)
void
setArtifactFactory(org.apache.maven.artifact.factory.ArtifactFactory artifactFactory)
void
setClassesDirectory(java.io.File classesDirectory)
void
setContainerConfigXML(java.io.File containerConfigXML)
void
setFilters(java.util.List<java.lang.String> filters)
void
setJarArchiver(org.codehaus.plexus.archiver.jar.JarArchiver jarArchiver)
void
setNonFilteredFileExtensions(java.util.List<java.lang.String> nonFilteredFileExtensions)
void
setOutputFileNameMapping(java.lang.String outputFileNameMapping)
void
setOverlays(java.util.List<Overlay> overlays)
void
setProject(org.apache.maven.project.MavenProject project)
void
setWarSourceDirectory(java.io.File warSourceDirectory)
void
setWarSourceExcludes(java.lang.String warSourceExcludes)
void
setWarSourceIncludes(java.lang.String warSourceIncludes)
void
setWebappDirectory(java.io.File webappDirectory)
void
setWebResources(org.apache.maven.model.Resource[] webResources)
void
setWebXml(java.io.File webXml)
void
setWorkDirectory(java.io.File workDirectory)
-
Methods inherited from class org.apache.maven.plugin.AbstractMojo
getLog, getPluginContext, setLog, setPluginContext
-
-
-
-
Field Detail
-
META_INF
private static final java.lang.String META_INF
- See Also:
- Constant Field Values
-
WEB_INF
private static final java.lang.String WEB_INF
- See Also:
- Constant Field Values
-
failOnMissingWebXml
@Parameter protected java.lang.Boolean failOnMissingWebXml
Whether or not to fail the build if theweb.xml
file is missing. Set tofalse
if you want your WAR built without aweb.xml
file. This may be useful if you are building an overlay that has no web.xml file.Starting with 3.1.0, this property defaults to
false
if the project depends on the Servlet 3.0 API or newer.- Since:
- 2.1-alpha-2
-
project
@Parameter(defaultValue="${project}", readonly=true, required=true) private org.apache.maven.project.MavenProject project
The Maven project.
-
classesDirectory
@Parameter(defaultValue="${project.build.outputDirectory}", required=true, readonly=true) private java.io.File classesDirectory
The directory containing compiled classes.
-
archiveClasses
@Parameter(defaultValue="false") private boolean archiveClasses
Whether a JAR file will be created for the classes in the webapp. Using this optional configuration parameter will make the compiled classes to be archived into a JAR file in/WEB-INF/lib/
and the classes directory will then be excluded from the webapp/WEB-INF/classes/
.- Since:
- 2.0.1
-
resourceEncoding
@Parameter(defaultValue="${project.build.sourceEncoding}") private java.lang.String resourceEncoding
The encoding to use when copying filtered web resources.- Since:
- 2.3
-
propertiesEncoding
@Parameter protected java.lang.String propertiesEncoding
The character encoding to use when reading and writing filtered properties files. If not specified, it will default to the value of the "resourceEncoding" parameter.- Since:
- 3.4.0
-
jarArchiver
@Component(role=org.codehaus.plexus.archiver.Archiver.class, hint="jar") private org.codehaus.plexus.archiver.jar.JarArchiver jarArchiver
The JAR archiver needed for archiving the classes directory into a JAR file under WEB-INF/lib.
-
webappDirectory
@Parameter(defaultValue="${project.build.directory}/${project.build.finalName}", required=true) private java.io.File webappDirectory
The directory where the webapp is built.
-
warSourceDirectory
@Parameter(defaultValue="${basedir}/src/main/webapp", required=true) private java.io.File warSourceDirectory
Single directory for extra files to include in the WAR. This is where you place your JSP files.
-
webResources
@Parameter private org.apache.maven.model.Resource[] webResources
The list of webResources we want to transfer.
-
filters
@Parameter private java.util.List<java.lang.String> filters
Filters (property files) to include during the interpolation of the pom.xml.
-
delimiters
@Parameter private java.util.LinkedHashSet<java.lang.String> delimiters
Set of delimiters for expressions to filter within the resources. These delimiters are specified in the form 'beginToken*endToken'. If no '*' is given, the delimiter is assumed to be the same for start and end.
So, the default filtering delimiters might be specified as:
<delimiters> <delimiter>${*}</delimiter> <delimiter>@</delimiter> </delimiters>
Since the '@' delimiter is the same on both ends, we don't need to specify '@*@' (though we can).
- Since:
- 3.0.0
-
useDefaultDelimiters
@Parameter(defaultValue="true") private boolean useDefaultDelimiters
Use default delimiters in addition to custom delimiters, if any.- Since:
- 3.0.0
-
webXml
@Parameter private java.io.File webXml
The path to the web.xml file to use.
-
containerConfigXML
@Parameter private java.io.File containerConfigXML
The path to a configuration file for the servlet container. Note that the file name may be different for different servlet containers. Apache Tomcat uses a configuration file named context.xml. The file will be copied to the META-INF directory.
-
workDirectory
@Parameter(defaultValue="${project.build.directory}/war/work", required=true) private java.io.File workDirectory
Directory to unpack dependent WARs into if needed.
-
outputFileNameMapping
@Parameter private java.lang.String outputFileNameMapping
The file name mapping to use when copying libraries and TLDs. If no file mapping is set (default) the files are copied with their standard names.- Since:
- 2.1-alpha-1
-
artifactFactory
@Component(role=org.apache.maven.artifact.factory.ArtifactFactory.class) private org.apache.maven.artifact.factory.ArtifactFactory artifactFactory
-
archiverManager
@Component(role=org.codehaus.plexus.archiver.manager.ArchiverManager.class) private org.codehaus.plexus.archiver.manager.ArchiverManager archiverManager
To look up Archiver/UnArchiver implementations.
-
mavenFileFilter
@Component(role=org.apache.maven.shared.filtering.MavenFileFilter.class, hint="default") private org.apache.maven.shared.filtering.MavenFileFilter mavenFileFilter
-
mavenResourcesFiltering
@Component(role=org.apache.maven.shared.filtering.MavenResourcesFiltering.class, hint="default") private org.apache.maven.shared.filtering.MavenResourcesFiltering mavenResourcesFiltering
-
warSourceIncludes
@Parameter(defaultValue="**") private java.lang.String warSourceIncludes
The comma separated list of tokens to include when copying the content of the warSourceDirectory.
-
warSourceExcludes
@Parameter private java.lang.String warSourceExcludes
The comma separated list of tokens to exclude when copying the content of the warSourceDirectory.
-
dependentWarIncludes
@Parameter private java.lang.String dependentWarIncludes
The comma separated list of tokens to include when doing a WAR overlay. Default isOverlay.DEFAULT_INCLUDES
-
dependentWarExcludes
@Parameter private java.lang.String dependentWarExcludes
The comma separated list of tokens to exclude when doing a WAR overlay. Default isOverlay.DEFAULT_EXCLUDES
-
overlays
@Parameter private java.util.List<Overlay> overlays
The overlays to apply. Each <overlay> element may contain:- id (defaults to
currentBuild
) - groupId (if this and artifactId are null, then the current project is treated as its own overlay)
- artifactId (see above)
- classifier
- type
- includes (a list of string patterns)
- excludes (a list of string patterns)
- filtered (defaults to false)
- skip (defaults to false)
- targetPath (defaults to root of webapp structure)
- Since:
- 2.1-alpha-1
- id (defaults to
-
nonFilteredFileExtensions
@Parameter private java.util.List<java.lang.String> nonFilteredFileExtensions
A list of file extensions that should not be filtered. Will be used when filtering webResources and overlays.- Since:
- 2.1-alpha-2
-
session
@Parameter(defaultValue="${session}", readonly=true, required=true) private org.apache.maven.execution.MavenSession session
- Since:
- 2.1-alpha-2
-
filteringDeploymentDescriptors
@Parameter(defaultValue="false") private boolean filteringDeploymentDescriptors
To filter deployment descriptors. Disabled by default.- Since:
- 2.1-alpha-2
-
escapedBackslashesInFilePath
@Parameter(defaultValue="false") private boolean escapedBackslashesInFilePath
To escape interpolated values with Windows pathc:\foo\bar
will be replaced withc:\\foo\\bar
.- Since:
- 2.1-alpha-2
-
escapeString
@Parameter protected java.lang.String escapeString
Expression preceded with this String won't be interpolated.\${foo}
will be replaced with${foo}
.- Since:
- 2.1-beta-1
-
recompressZippedFiles
@Parameter(defaultValue="true") private boolean recompressZippedFiles
Indicates if zip archives (jar,zip etc) being added to the war should be compressed again. Compressing again can result in smaller archive size, but gives noticeably longer execution time.- Since:
- 2.3
-
includeEmptyDirectories
@Parameter(defaultValue="false") private boolean includeEmptyDirectories
- Since:
- 2.4
-
supportMultiLineFiltering
@Parameter(defaultValue="false") private boolean supportMultiLineFiltering
Stop searching endToken at the end of line- Since:
- 2.4
-
useJvmChmod
@Parameter(defaultValue="true") private boolean useJvmChmod
use jvmChmod rather that cli chmod and forking process- Since:
- 2.4
-
archive
@Parameter private org.apache.maven.archiver.MavenArchiveConfiguration archive
The archive configuration to use. See Maven Archiver Reference.
-
outputTimestamp
@Parameter(defaultValue="${project.build.outputTimestamp}") protected java.lang.String outputTimestamp
Timestamp for reproducible output archive entries, either formatted as ISO 8601yyyy-MM-dd'T'HH:mm:ssXXX
or as an int representing seconds since the epoch (like SOURCE_DATE_EPOCH).- Since:
- 3.3.0
-
outdatedCheckPath
@Parameter(defaultValue="WEB-INF/lib/") private java.lang.String outdatedCheckPath
Path prefix for resources that will be checked against outdated content. Starting with 3.3.2, if a value of "/" is specified the entire webappDirectory will be checked, i.e. the "/" signifies "root".- Since:
- 3.3.1
-
currentProjectOverlay
private final Overlay currentProjectOverlay
-
-
Method Detail
-
getCurrentProjectOverlay
public Overlay getCurrentProjectOverlay()
- Returns:
- The current overlay.
-
getExcludes
protected java.lang.String[] getExcludes()
Returns a string array of the excludes to be used when copying the content of the WAR source directory.- Returns:
- an array of tokens to exclude
-
getIncludes
protected java.lang.String[] getIncludes()
Returns a string array of the includes to be used when assembling/copying the WAR.- Returns:
- an array of tokens to include
-
getDependentWarExcludes
protected java.lang.String[] getDependentWarExcludes()
Returns a string array of the excludes to be used when adding dependent WAR as an overlay onto this WAR.- Returns:
- an array of tokens to exclude
-
getDependentWarIncludes
protected java.lang.String[] getDependentWarIncludes()
Returns a string array of the includes to be used when adding dependent WARs as an overlay onto this WAR.- Returns:
- an array of tokens to include
-
buildExplodedWebapp
public void buildExplodedWebapp(java.io.File webapplicationDirectory) throws org.apache.maven.plugin.MojoExecutionException, org.apache.maven.plugin.MojoFailureException
- Parameters:
webapplicationDirectory
- The web application directory.- Throws:
org.apache.maven.plugin.MojoExecutionException
- In case of failure.org.apache.maven.plugin.MojoFailureException
- In case of failure.
-
buildWebapp
public void buildWebapp(org.apache.maven.project.MavenProject mavenProject, java.io.File webapplicationDirectory) throws org.apache.maven.plugin.MojoExecutionException, org.apache.maven.plugin.MojoFailureException, java.io.IOException
Builds the webapp for the specified project with the new packaging task thingy. Classes, libraries and tld files are copied to thewebappDirectory
during this phase.- Parameters:
mavenProject
- the maven projectwebapplicationDirectory
- the target directory- Throws:
org.apache.maven.plugin.MojoExecutionException
- if an error occurred while packaging the webapporg.apache.maven.plugin.MojoFailureException
- if an unexpected error occurred while packaging the webappjava.io.IOException
- if an error occurred while copying the files
-
getPackagingTasks
private java.util.List<WarPackagingTask> getPackagingTasks(OverlayManager overlayManager) throws org.apache.maven.plugin.MojoExecutionException
Returns aList
of theWarPackagingTask
instances to invoke to perform the packaging.- Parameters:
overlayManager
- the overlay manager- Returns:
- the list of packaging tasks
- Throws:
org.apache.maven.plugin.MojoExecutionException
- if the packaging tasks could not be built
-
getProject
public org.apache.maven.project.MavenProject getProject()
- Returns:
- The Maven Project.
-
setProject
public void setProject(org.apache.maven.project.MavenProject project)
- Parameters:
project
- The project to be set.
-
getClassesDirectory
public java.io.File getClassesDirectory()
- Returns:
- the classes directory.
-
setClassesDirectory
public void setClassesDirectory(java.io.File classesDirectory)
- Parameters:
classesDirectory
- The classes directory to be set.
-
getWebappDirectory
public java.io.File getWebappDirectory()
- Returns:
webappDirectory
-
setWebappDirectory
public void setWebappDirectory(java.io.File webappDirectory)
- Parameters:
webappDirectory
- The web application directory.
-
getWarSourceDirectory
public java.io.File getWarSourceDirectory()
- Returns:
warSourceDirectory
-
setWarSourceDirectory
public void setWarSourceDirectory(java.io.File warSourceDirectory)
- Parameters:
warSourceDirectory
-warSourceDirectory
-
getWebXml
public java.io.File getWebXml()
- Returns:
- The
webXml
-
setWebXml
public void setWebXml(java.io.File webXml)
- Parameters:
webXml
- ThewebXml
-
getContainerConfigXML
public java.io.File getContainerConfigXML()
- Returns:
containerConfigXML
-
setContainerConfigXML
public void setContainerConfigXML(java.io.File containerConfigXML)
- Parameters:
containerConfigXML
-containerConfigXML
-
getOutputFileNameMapping
public java.lang.String getOutputFileNameMapping()
- Returns:
outputFileNameMapping
-
setOutputFileNameMapping
public void setOutputFileNameMapping(java.lang.String outputFileNameMapping)
- Parameters:
outputFileNameMapping
-outputFileNameMapping
-
setOverlays
public void setOverlays(java.util.List<Overlay> overlays)
- Parameters:
overlays
-overlays
-
isArchiveClasses
public boolean isArchiveClasses()
- Returns:
archiveClasses
-
setArchiveClasses
public void setArchiveClasses(boolean archiveClasses)
- Parameters:
archiveClasses
-archiveClasses
-
getJarArchiver
public org.codehaus.plexus.archiver.jar.JarArchiver getJarArchiver()
- Returns:
JarArchiver
-
setJarArchiver
public void setJarArchiver(org.codehaus.plexus.archiver.jar.JarArchiver jarArchiver)
- Parameters:
jarArchiver
-JarArchiver
-
getWebResources
public org.apache.maven.model.Resource[] getWebResources()
- Returns:
webResources
.
-
setWebResources
public void setWebResources(org.apache.maven.model.Resource[] webResources)
- Parameters:
webResources
-webResources
.
-
getFilters
public java.util.List<java.lang.String> getFilters()
- Returns:
filters
-
setFilters
public void setFilters(java.util.List<java.lang.String> filters)
- Parameters:
filters
-filters
-
getWorkDirectory
public java.io.File getWorkDirectory()
- Returns:
workDirectory
-
setWorkDirectory
public void setWorkDirectory(java.io.File workDirectory)
- Parameters:
workDirectory
-workDirectory
-
getWarSourceIncludes
public java.lang.String getWarSourceIncludes()
- Returns:
warSourceIncludes
-
setWarSourceIncludes
public void setWarSourceIncludes(java.lang.String warSourceIncludes)
- Parameters:
warSourceIncludes
-warSourceIncludes
-
getWarSourceExcludes
public java.lang.String getWarSourceExcludes()
- Returns:
warSourceExcludes
-
setWarSourceExcludes
public void setWarSourceExcludes(java.lang.String warSourceExcludes)
- Parameters:
warSourceExcludes
-warSourceExcludes
-
getArchive
public org.apache.maven.archiver.MavenArchiveConfiguration getArchive()
- Returns:
archive
-
getNonFilteredFileExtensions
public java.util.List<java.lang.String> getNonFilteredFileExtensions()
- Returns:
nonFilteredFileExtensions
-
setNonFilteredFileExtensions
public void setNonFilteredFileExtensions(java.util.List<java.lang.String> nonFilteredFileExtensions)
- Parameters:
nonFilteredFileExtensions
-nonFilteredFileExtensions
-
getArtifactFactory
public org.apache.maven.artifact.factory.ArtifactFactory getArtifactFactory()
- Returns:
artifactFactory
-
setArtifactFactory
public void setArtifactFactory(org.apache.maven.artifact.factory.ArtifactFactory artifactFactory)
- Parameters:
artifactFactory
-artifactFactory
-
getSession
protected org.apache.maven.execution.MavenSession getSession()
- Returns:
session
-
isRecompressZippedFiles
protected boolean isRecompressZippedFiles()
- Returns:
recompressZippedFiles
-
isIncludeEmptyDirectories
protected boolean isIncludeEmptyDirectories()
- Returns:
includeEmptyDirectories
-
-