Class 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.
    • Field Detail

      • failOnMissingWebXml

        @Parameter
        protected java.lang.Boolean failOnMissingWebXml
        Whether or not to fail the build if the web.xml file is missing. Set to false if you want your WAR built without a web.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 is Overlay.DEFAULT_INCLUDES
      • dependentWarExcludes

        @Parameter
        private java.lang.String dependentWarExcludes
        The comma separated list of tokens to exclude when doing a WAR overlay. Default is Overlay.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
      • 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 path c:\foo\bar will be replaced with c:\\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 8601 yyyy-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
    • Constructor Detail

      • AbstractWarMojo

        public AbstractWarMojo()
    • 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 the webappDirectory during this phase.
        Parameters:
        mavenProject - the maven project
        webapplicationDirectory - the target directory
        Throws:
        org.apache.maven.plugin.MojoExecutionException - if an error occurred while packaging the webapp
        org.apache.maven.plugin.MojoFailureException - if an unexpected error occurred while packaging the webapp
        java.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 a List of the WarPackagingTask 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 - The webXml
      • 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
      • getOverlays

        public java.util.List<Overlay> getOverlays()
        Returns:
        overlays
      • setOverlays

        public void setOverlays​(java.util.List<Overlay> overlays)
        Parameters:
        overlays - overlays
      • addOverlay

        public void addOverlay​(Overlay overlay)
        Parameters:
        overlay - add 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