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.
  • Field Details

    • META_INF

      private static final String META_INF
      See Also:
    • WEB_INF

      private static final String WEB_INF
      See Also:
    • failOnMissingWebXml

      @Parameter protected 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 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 String resourceEncoding
      The encoding to use when copying filtered web resources.
      Since:
      2.3
    • propertiesEncoding

      @Parameter protected 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 File webappDirectory
      The directory where the webapp is built.
    • warSourceDirectory

      @Parameter(defaultValue="${basedir}/src/main/webapp", required=true) private 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 List<String> filters
      Filters (property files) to include during the interpolation of the pom.xml.
    • delimiters

      @Parameter private LinkedHashSet<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 File webXml
      The path to the web.xml file to use.
    • containerConfigXML

      @Parameter private 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 File workDirectory
      Directory to unpack dependent WARs into if needed.
    • outputFileNameMapping

      @Parameter private 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 String warSourceIncludes
      The comma separated list of tokens to include when copying the content of the warSourceDirectory.
    • warSourceExcludes

      @Parameter private String warSourceExcludes
      The comma separated list of tokens to exclude when copying the content of the warSourceDirectory.
    • dependentWarIncludes

      @Parameter private String dependentWarIncludes
      The comma separated list of tokens to include when doing a WAR overlay. Default is Overlay.DEFAULT_INCLUDES
    • dependentWarExcludes

      @Parameter private String dependentWarExcludes
      The comma separated list of tokens to exclude when doing a WAR overlay. Default is Overlay.DEFAULT_EXCLUDES
    • overlays

      @Parameter private 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 List<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 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 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 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 Details

    • AbstractWarMojo

      public AbstractWarMojo()
  • Method Details

    • getCurrentProjectOverlay

      public Overlay getCurrentProjectOverlay()
      Returns:
      The current overlay.
    • getExcludes

      protected 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 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 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 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(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, 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 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
      IOException - if an error occurred while copying the files
    • getPackagingTasks

      private 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 File getClassesDirectory()
      Returns:
      the classes directory.
    • setClassesDirectory

      public void setClassesDirectory(File classesDirectory)
      Parameters:
      classesDirectory - The classes directory to be set.
    • getWebappDirectory

      public File getWebappDirectory()
      Returns:
      webappDirectory
    • setWebappDirectory

      public void setWebappDirectory(File webappDirectory)
      Parameters:
      webappDirectory - The web application directory.
    • getWarSourceDirectory

      public File getWarSourceDirectory()
      Returns:
      warSourceDirectory
    • setWarSourceDirectory

      public void setWarSourceDirectory(File warSourceDirectory)
      Parameters:
      warSourceDirectory - warSourceDirectory
    • getWebXml

      public File getWebXml()
      Returns:
      The webXml
    • setWebXml

      public void setWebXml(File webXml)
      Parameters:
      webXml - The webXml
    • getContainerConfigXML

      public File getContainerConfigXML()
      Returns:
      containerConfigXML
    • setContainerConfigXML

      public void setContainerConfigXML(File containerConfigXML)
      Parameters:
      containerConfigXML - containerConfigXML
    • getOutputFileNameMapping

      public String getOutputFileNameMapping()
      Returns:
      outputFileNameMapping
    • setOutputFileNameMapping

      public void setOutputFileNameMapping(String outputFileNameMapping)
      Parameters:
      outputFileNameMapping - outputFileNameMapping
    • getOverlays

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

      public void setOverlays(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 List<String> getFilters()
      Returns:
      filters
    • setFilters

      public void setFilters(List<String> filters)
      Parameters:
      filters - filters
    • getWorkDirectory

      public File getWorkDirectory()
      Returns:
      workDirectory
    • setWorkDirectory

      public void setWorkDirectory(File workDirectory)
      Parameters:
      workDirectory - workDirectory
    • getWarSourceIncludes

      public String getWarSourceIncludes()
      Returns:
      warSourceIncludes
    • setWarSourceIncludes

      public void setWarSourceIncludes(String warSourceIncludes)
      Parameters:
      warSourceIncludes - warSourceIncludes
    • getWarSourceExcludes

      public String getWarSourceExcludes()
      Returns:
      warSourceExcludes
    • setWarSourceExcludes

      public void setWarSourceExcludes(String warSourceExcludes)
      Parameters:
      warSourceExcludes - warSourceExcludes
    • getArchive

      public org.apache.maven.archiver.MavenArchiveConfiguration getArchive()
      Returns:
      archive
    • getNonFilteredFileExtensions

      public List<String> getNonFilteredFileExtensions()
      Returns:
      nonFilteredFileExtensions
    • setNonFilteredFileExtensions

      public void setNonFilteredFileExtensions(List<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