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 ClassesModifier and TypeClassDescriptionprivate classWarPackagingContext default implementation. -
Field Summary
FieldsModifier and TypeFieldDescriptionprivate org.apache.maven.archiver.MavenArchiveConfigurationThe archive configuration to use.private booleanWhether a JAR file will be created for the classes in the webapp.private final org.codehaus.plexus.archiver.manager.ArchiverManagerTo look up Archiver/UnArchiver implementations.private final org.apache.maven.artifact.handler.manager.ArtifactHandlerManagerprivate FileThe directory containing compiled classes.private FileThe path to a configuration file for the servlet container.private final Overlayprivate LinkedHashSet<String> Set of delimiters for expressions to filter within the resources.private StringThe comma separated list of tokens to exclude when doing a WAR overlay.private StringThe comma separated list of tokens to include when doing a WAR overlay.private booleanTo escape interpolated values with Windows pathc:\foo\barwill be replaced withc:\\foo\\bar.protected StringExpression preceded with this String won't be interpolated.protected BooleanWhether to fail the build if theweb.xmlfile is missing.private booleanTo filter deployment descriptors.Filters (property files) to include during the interpolation of the pom.xml.private booleanprivate final org.codehaus.plexus.archiver.jar.JarArchiverThe JAR archiver needed for archiving the classes directory into a JAR file under WEB-INF/lib.private final org.apache.maven.shared.filtering.MavenFileFilterprivate final org.apache.maven.shared.filtering.MavenResourcesFilteringprivate static final StringA list of file extensions that should not be filtered.private StringPath prefix for resources that will be checked against outdated content.private StringThe file name mapping to use when copying libraries and TLDs.protected StringTimestamp for reproducible output archive entries, either formatted as ISO 8601yyyy-MM-dd'T'HH:mm:ssXXXor as an int representing seconds since the epoch (like SOURCE_DATE_EPOCH).The overlays to apply.private StringThe comma separated list of tokens to exclude from the WAR before packaging.private StringThe comma separated list of tokens to include in the WAR before packaging.private org.apache.maven.project.MavenProjectThe Maven project.protected StringThe character encoding to use when reading and writing filtered properties files.private booleanIndicates if zip archives (jar,zip etc) being added to the war should be compressed again.private StringThe encoding to use when copying filtered web resources.private final org.apache.maven.execution.MavenSessionprivate booleanStop searching endToken at the end of line.private booleanUse default delimiters in addition to custom delimiters, if any.private FileSingle directory for extra files to include in the WAR.private StringThe comma separated list of tokens to exclude when copying the content of the warSourceDirectory.private StringThe comma separated list of tokens to include when copying the content of the warSourceDirectory.private static final Stringprivate FileThe directory where the webapp is built.private org.apache.maven.model.Resource[]The list of webResources we want to transfer.private FileThe path to the web.xml file to use.private FileDirectory to unpack dependent WARs into if needed.Fields inherited from interface org.apache.maven.plugin.Mojo
ROLE -
Constructor Summary
ConstructorsModifierConstructorDescriptionprotectedAbstractWarMojo(org.apache.maven.artifact.handler.manager.ArtifactHandlerManager artifactHandlerManager, org.codehaus.plexus.archiver.manager.ArchiverManager archiverManager, org.apache.maven.shared.filtering.MavenFileFilter mavenFileFilter, org.apache.maven.shared.filtering.MavenResourcesFiltering mavenResourcesFiltering, org.apache.maven.execution.MavenSession session) -
Method Summary
Modifier and TypeMethodDescriptionvoidaddOverlay(Overlay overlay) voidbuildExplodedWebapp(File webapplicationDirectory) voidbuildWebapp(org.apache.maven.project.MavenProject mavenProject, File webapplicationDirectory) Builds the webapp for the specified project with the new packaging task thingy.org.apache.maven.archiver.MavenArchiveConfigurationorg.codehaus.plexus.archiver.manager.ArchiverManagerprotected String[]Returns a string array of the excludes to be used when adding dependent WAR as an overlay onto this WAR.protected String[]Returns a string array of the includes to be used when adding dependent WARs as an overlay onto this WAR.protected String[]Returns a string array of the excludes to be used when copying the content of the WAR source directory.protected String[]Returns a string array of the includes to be used when assembling/copying the WAR.org.codehaus.plexus.archiver.jar.JarArchiverString[]String[]private List<WarPackagingTask> getPackagingTasks(OverlayManager overlayManager) Returns aListof theWarPackagingTaskinstances to invoke to perform the packaging.org.apache.maven.project.MavenProjectprotected org.apache.maven.execution.MavenSessionorg.apache.maven.model.Resource[]booleanprotected booleanprotected booleanvoidsetClassesDirectory(File classesDirectory) voidsetContainerConfigXML(File containerConfigXML) voidsetOutputFileNameMapping(String outputFileNameMapping) voidsetOverlays(List<Overlay> overlays) voidsetPackagingExcludes(String packagingExcludes) voidsetPackagingIncludes(String packagingIncludes) voidsetProject(org.apache.maven.project.MavenProject project) voidsetWarSourceDirectory(File warSourceDirectory) voidsetWebappDirectory(File webappDirectory) voidsetWebResources(org.apache.maven.model.Resource[] webResources) voidMethods inherited from class org.apache.maven.plugin.AbstractMojo
getLog, getPluginContext, setLog, setPluginContextMethods inherited from class Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitMethods inherited from interface org.apache.maven.plugin.Mojo
execute
-
Field Details
-
META_INF
- See Also:
-
WEB_INF
- See Also:
-
failOnMissingWebXml
Whether to fail the build if theweb.xmlfile is missing. Set tofalseif you want your WAR built without aweb.xmlfile. 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
falseif 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 projectThe Maven project. -
classesDirectory
@Parameter(defaultValue="${project.build.outputDirectory}", required=true, readonly=true) private File classesDirectoryThe directory containing compiled classes. -
archiveClasses
@Parameter(defaultValue="false") private boolean archiveClassesWhether 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
The encoding to use when copying filtered web resources.- Since:
- 2.3
-
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
-
webappDirectory
@Parameter(defaultValue="${project.build.directory}/${project.build.finalName}", required=true) private File webappDirectoryThe directory where the webapp is built. -
warSourceDirectory
@Parameter(defaultValue="${basedir}/src/main/webapp", required=true) private File warSourceDirectorySingle 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[] webResourcesThe list of webResources we want to transfer. -
filters
-
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 useDefaultDelimitersUse default delimiters in addition to custom delimiters, if any.- Since:
- 3.0.0
-
webXml
The path to the web.xml file to use. -
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 File workDirectoryDirectory to unpack dependent WARs into if needed. -
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
-
warSourceIncludes
The comma separated list of tokens to include when copying the content of the warSourceDirectory. -
warSourceExcludes
The comma separated list of tokens to exclude when copying the content of the warSourceDirectory. -
dependentWarIncludes
The comma separated list of tokens to include when doing a WAR overlay. Default isOverlay.DEFAULT_INCLUDES -
dependentWarExcludes
The comma separated list of tokens to exclude when doing a WAR overlay. Default isOverlay.DEFAULT_EXCLUDES -
packagingExcludes
The comma separated list of tokens to exclude from the WAR before packaging. This option may be used to implement the skinny WAR use case. Note that you can use the Java Regular Expressions engine to include and exclude specific pattern using the expression %regex[]. Hint: read the about (?!Pattern).- Since:
- 2.1-alpha-2
-
packagingIncludes
The comma separated list of tokens to include in the WAR before packaging. By default everything is included. This option may be used to implement the skinny WAR use case. Note that you can use the Java Regular Expressions engine to include and exclude specific pattern using the expression %regex[].- Since:
- 2.1-beta-1
-
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
-
filteringDeploymentDescriptors
@Parameter(defaultValue="false") private boolean filteringDeploymentDescriptorsTo filter deployment descriptors. Disabled by default.- Since:
- 2.1-alpha-2
-
escapedBackslashesInFilePath
@Parameter(defaultValue="false") private boolean escapedBackslashesInFilePathTo escape interpolated values with Windows pathc:\foo\barwill be replaced withc:\\foo\\bar.- Since:
- 2.1-alpha-2
-
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 recompressZippedFilesIndicates 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 supportMultiLineFilteringStop searching endToken at the end of line.- Since:
- 2.4
-
archive
@Parameter private org.apache.maven.archiver.MavenArchiveConfiguration archiveThe archive configuration to use. See Maven Archiver Reference. -
outputTimestamp
Timestamp for reproducible output archive entries, either formatted as ISO 8601yyyy-MM-dd'T'HH:mm:ssXXXor as an int representing seconds since the epoch (like SOURCE_DATE_EPOCH).- Since:
- 3.3.0
-
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
-
jarArchiver
private final org.codehaus.plexus.archiver.jar.JarArchiver jarArchiverThe JAR archiver needed for archiving the classes directory into a JAR file under WEB-INF/lib. -
artifactHandlerManager
private final org.apache.maven.artifact.handler.manager.ArtifactHandlerManager artifactHandlerManager -
archiverManager
private final org.codehaus.plexus.archiver.manager.ArchiverManager archiverManagerTo look up Archiver/UnArchiver implementations. -
mavenFileFilter
private final org.apache.maven.shared.filtering.MavenFileFilter mavenFileFilter -
mavenResourcesFiltering
private final org.apache.maven.shared.filtering.MavenResourcesFiltering mavenResourcesFiltering -
session
private final org.apache.maven.execution.MavenSession session
-
-
Constructor Details
-
Method Details
-
getArchiverManager
public org.codehaus.plexus.archiver.manager.ArchiverManager getArchiverManager() -
getCurrentProjectOverlay
- Returns:
- the current overlay
-
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
Returns a string array of the includes to be used when assembling/copying the WAR.- Returns:
- an array of tokens to include
-
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
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(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 failureorg.apache.maven.plugin.MojoFailureException- in case of failure
-
buildWebapp
public void buildWebapp(org.apache.maven.project.MavenProject mavenProject, File webapplicationDirectory) throws org.apache.maven.plugin.MojoExecutionException, org.apache.maven.plugin.MojoFailureException, IOException Builds the webapp for the specified project with the new packaging task thingy. Classes, libraries and tld files are copied to thewebappDirectoryduring this phase.- Parameters:
mavenProject- the maven projectwebapplicationDirectory- the target directory- Throws:
IOException- if an error occurred while copying the filesorg.apache.maven.plugin.MojoExecutionException- if an error occurred while packaging the webapporg.apache.maven.plugin.MojoFailureException- if an unexpected error occurred while packaging the webapp
-
getPackagingTasks
private List<WarPackagingTask> getPackagingTasks(OverlayManager overlayManager) throws org.apache.maven.plugin.MojoExecutionException Returns aListof theWarPackagingTaskinstances 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
- Returns:
- the classes directory
-
setClassesDirectory
- Parameters:
classesDirectory- the classes directory to be set
-
getWebappDirectory
- Returns:
webappDirectory
-
setWebappDirectory
- Parameters:
webappDirectory- the web application directory
-
getWarSourceDirectory
- Returns:
warSourceDirectory
-
setWarSourceDirectory
- Parameters:
warSourceDirectory-warSourceDirectory
-
getWebXml
-
setWebXml
-
getContainerConfigXML
- Returns:
containerConfigXML
-
setContainerConfigXML
- Parameters:
containerConfigXML-containerConfigXML
-
getOutputFileNameMapping
- Returns:
outputFileNameMapping
-
setOutputFileNameMapping
- Parameters:
outputFileNameMapping-outputFileNameMapping
-
getOverlays
-
setOverlays
-
addOverlay
-
isArchiveClasses
public boolean isArchiveClasses()- Returns:
archiveClasses
-
getJarArchiver
public org.codehaus.plexus.archiver.jar.JarArchiver getJarArchiver()- Returns:
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
-
getWorkDirectory
- Returns:
workDirectory
-
getWarSourceIncludes
- Returns:
warSourceIncludes
-
getWarSourceExcludes
- Returns:
warSourceExcludes
-
getArchive
public org.apache.maven.archiver.MavenArchiveConfiguration getArchive()- Returns:
archive
-
getNonFilteredFileExtensions
- Returns:
nonFilteredFileExtensions
-
getSession
protected org.apache.maven.execution.MavenSession getSession()- Returns:
session
-
isRecompressZippedFiles
protected boolean isRecompressZippedFiles()- Returns:
recompressZippedFiles
-
isIncludeEmptyDirectories
protected boolean isIncludeEmptyDirectories()- Returns:
includeEmptyDirectories
-
getPackagingExcludes
- Returns:
- the package excludes
-
setPackagingExcludes
- Parameters:
packagingExcludes-packagingExcludes
-
getPackagingIncludes
- Returns:
- the packaging includes
-
setPackagingIncludes
- Parameters:
packagingIncludes-packagingIncludes
-