Class ResourcesMojo

  • All Implemented Interfaces:
    org.apache.maven.plugin.ContextEnabled, org.apache.maven.plugin.Mojo, org.codehaus.plexus.personality.plexus.lifecycle.phase.Contextualizable
    Direct Known Subclasses:
    CopyResourcesMojo, TestResourcesMojo

    @Mojo(name="resources",
          defaultPhase=PROCESS_RESOURCES,
          requiresProject=true,
          threadSafe=true)
    public class ResourcesMojo
    extends org.apache.maven.plugin.AbstractMojo
    implements org.codehaus.plexus.personality.plexus.lifecycle.phase.Contextualizable
    Copy resources for the main source code to the main output directory. Always uses the project.build.resources element to specify the resources to copy.
    • Field Summary

      Fields 
      Modifier and Type Field Description
      protected boolean addDefaultExcludes
      By default files like .gitignore, .cvsignore etc.
      protected java.util.List<java.lang.String> buildFilters
      The list of additional filter properties files to be used along with System and project properties, which would be used for the filtering.
      protected java.util.LinkedHashSet<java.lang.String> delimiters
      Set of delimiters for expressions to filter within the resources.
      protected java.lang.String encoding
      The character encoding scheme to be applied when filtering resources.
      protected java.lang.String escapeString
      Expressions preceded with this string won't be interpolated.
      protected boolean escapeWindowsPaths
      Whether to escape backslashes and colons in windows-style paths.
      private boolean fileNameFiltering
      Support filtering of filenames folders etc.
      protected java.util.List<java.lang.String> filters
      The list of extra filter properties files to be used along with System properties, project properties, and filter properties files specified in the POM build/filters section, which should be used for the filtering during the current mojo execution.
      protected boolean includeEmptyDirs
      Copy any empty directories included in the Resources.
      private java.util.List<org.apache.maven.shared.filtering.MavenResourcesFiltering> mavenFilteringComponents  
      private java.util.List<java.lang.String> mavenFilteringHints
      List of plexus components hint which implements MavenResourcesFiltering.filterResources(MavenResourcesExecution).
      protected org.apache.maven.shared.filtering.MavenResourcesFiltering mavenResourcesFiltering  
      protected java.util.List<java.lang.String> nonFilteredFileExtensions
      Additional file extensions to not apply filtering (already defined are : jpg, jpeg, gif, bmp, png)
      private java.io.File outputDirectory
      The output directory into which to copy the resources.
      private boolean overwrite
      Overwrite existing files even if the destination files are newer.
      private org.codehaus.plexus.PlexusContainer plexusContainer  
      protected org.apache.maven.project.MavenProject project  
      private java.util.List<org.apache.maven.model.Resource> resources
      The list of resources we want to transfer.
      protected org.apache.maven.execution.MavenSession session  
      private boolean skip
      You can skip the execution of the plugin if you need to.
      private boolean supportMultiLineFiltering
      stop searching endToken at the end of line
      protected boolean useBuildFilters
      If false, don't use the filters specified in the build/filters section of the POM when processing resources in this mojo execution.
      protected boolean useDefaultDelimiters
      Use default delimiters in addition to custom delimiters, if any.
      • Fields inherited from interface org.apache.maven.plugin.Mojo

        ROLE
    • Constructor Summary

      Constructors 
      Constructor Description
      ResourcesMojo()  
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      private java.util.Properties addSeveralSpecialProperties()
      This solves https://issues.apache.org/jira/browse/MRESOURCES-99.
      BUT:
      This should be done different than defining those properties a second time, cause they have already being defined in Maven Model Builder (package org.apache.maven.model.interpolation) via BuildTimestampValueSource.
      void contextualize​(org.codehaus.plexus.context.Context context)
      void execute()
      protected void executeUserFilterComponents​(org.apache.maven.shared.filtering.MavenResourcesExecution mavenResourcesExecution)  
      protected java.util.List<java.lang.String> getCombinedFiltersList()  
      java.util.LinkedHashSet<java.lang.String> getDelimiters()  
      java.util.List<java.lang.String> getFilters()  
      java.io.File getOutputDirectory()  
      java.util.List<org.apache.maven.model.Resource> getResources()  
      private boolean isFilteringEnabled​(java.util.Collection<org.apache.maven.model.Resource> theResources)
      Determines whether filtering has been enabled for any resource.
      boolean isIncludeEmptyDirs()  
      boolean isOverwrite()  
      boolean isSkip()  
      boolean isUseDefaultDelimiters()  
      void setDelimiters​(java.util.LinkedHashSet<java.lang.String> delimiters)  
      void setFilters​(java.util.List<java.lang.String> filters)  
      void setIncludeEmptyDirs​(boolean includeEmptyDirs)  
      void setOutputDirectory​(java.io.File outputDirectory)  
      void setOverwrite​(boolean overwrite)  
      void setResources​(java.util.List<org.apache.maven.model.Resource> resources)  
      void setUseDefaultDelimiters​(boolean useDefaultDelimiters)  
      • Methods inherited from class org.apache.maven.plugin.AbstractMojo

        getLog, getPluginContext, setLog, setPluginContext
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Field Detail

      • encoding

        @Parameter(defaultValue="${project.build.sourceEncoding}")
        protected java.lang.String encoding
        The character encoding scheme to be applied when filtering resources.
      • outputDirectory

        @Parameter(defaultValue="${project.build.outputDirectory}",
                   required=true)
        private java.io.File outputDirectory
        The output directory into which to copy the resources.
      • resources

        @Parameter(defaultValue="${project.resources}",
                   required=true,
                   readonly=true)
        private java.util.List<org.apache.maven.model.Resource> resources
        The list of resources we want to transfer.
      • project

        @Parameter(defaultValue="${project}",
                   readonly=true,
                   required=true)
        protected org.apache.maven.project.MavenProject project
      • buildFilters

        @Parameter(defaultValue="${project.build.filters}",
                   readonly=true)
        protected java.util.List<java.lang.String> buildFilters
        The list of additional filter properties files to be used along with System and project properties, which would be used for the filtering.
        Since:
        2.4
        See Also:
        filters
      • filters

        @Parameter
        protected java.util.List<java.lang.String> filters

        The list of extra filter properties files to be used along with System properties, project properties, and filter properties files specified in the POM build/filters section, which should be used for the filtering during the current mojo execution.

        Normally, these will be configured from a plugin's execution section, to provide a different set of filters for a particular execution. For instance, starting in Maven 2.2.0, you have the option of configuring executions with the id's default-resources and default-testResources to supply different configurations for the two different types of resources. By supplying extraFilters configurations, you can separate which filters are used for which type of resource.

      • useBuildFilters

        @Parameter(defaultValue="true")
        protected boolean useBuildFilters
        If false, don't use the filters specified in the build/filters section of the POM when processing resources in this mojo execution.
        Since:
        2.4
        See Also:
        buildFilters, filters
      • mavenResourcesFiltering

        @Component(role=org.apache.maven.shared.filtering.MavenResourcesFiltering.class,
                   hint="default")
        protected org.apache.maven.shared.filtering.MavenResourcesFiltering mavenResourcesFiltering
      • session

        @Parameter(defaultValue="${session}",
                   readonly=true,
                   required=true)
        protected org.apache.maven.execution.MavenSession session
      • escapeString

        @Parameter
        protected java.lang.String escapeString
        Expressions preceded with this string won't be interpolated. Anything else preceded with this string will be passed through unchanged. For example \${foo} will be replaced with ${foo} but \\${foo} will be replaced with \\value of foo, if this parameter has been set to the backslash.
        Since:
        2.3
      • overwrite

        @Parameter(defaultValue="false")
        private boolean overwrite
        Overwrite existing files even if the destination files are newer.
        Since:
        2.3
      • includeEmptyDirs

        @Parameter(defaultValue="false")
        protected boolean includeEmptyDirs
        Copy any empty directories included in the Resources.
        Since:
        2.3
      • nonFilteredFileExtensions

        @Parameter
        protected java.util.List<java.lang.String> nonFilteredFileExtensions
        Additional file extensions to not apply filtering (already defined are : jpg, jpeg, gif, bmp, png)
        Since:
        2.3
      • escapeWindowsPaths

        @Parameter(defaultValue="true")
        protected boolean escapeWindowsPaths
        Whether to escape backslashes and colons in windows-style paths.
        Since:
        2.4
      • delimiters

        @Parameter
        protected 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:
        2.4
      • useDefaultDelimiters

        @Parameter(defaultValue="true")
        protected boolean useDefaultDelimiters
        Use default delimiters in addition to custom delimiters, if any.
        Since:
        2.4
      • addDefaultExcludes

        @Parameter(defaultValue="true")
        protected boolean addDefaultExcludes
        By default files like .gitignore, .cvsignore etc. are excluded which means they will not being copied. If you need them for a particular reason you can do that by settings this to false. This means all files like the following will be copied.
        • Misc: **/*~, **/#*#, **/.#*, **/%*%, **/._*
        • CVS: **/CVS, **/CVS/**, **/.cvsignore
        • RCS: **/RCS, **/RCS/**
        • SCCS: **/SCCS, **/SCCS/**
        • VSSercer: **/vssver.scc
        • MKS: **/project.pj
        • SVN: **/.svn, **/.svn/**
        • GNU: **/.arch-ids, **/.arch-ids/**
        • Bazaar: **/.bzr, **/.bzr/**
        • SurroundSCM: **/.MySCMServerInfo
        • Mac: **/.DS_Store
        • Serena Dimension: **/.metadata, **/.metadata/**
        • Mercurial: **/.hg, **/.hg/**
        • GIT: **/.git, **/.gitignore, **/.gitattributes, **/.git/**
        • Bitkeeper: **/BitKeeper, **/BitKeeper/**, **/ChangeSet, **/ChangeSet/**
        • Darcs: **/_darcs, **/_darcs/**, **/.darcsrepo, **/.darcsrepo/****/-darcs-backup*, **/.darcs-temp-mail
        Since:
        3.0.0
      • mavenFilteringHints

        @Parameter
        private java.util.List<java.lang.String> mavenFilteringHints

        List of plexus components hint which implements MavenResourcesFiltering.filterResources(MavenResourcesExecution). They will be executed after the resources copying/filtering.

        Since:
        2.4
      • plexusContainer

        private org.codehaus.plexus.PlexusContainer plexusContainer
        Since:
        2.4
      • mavenFilteringComponents

        private java.util.List<org.apache.maven.shared.filtering.MavenResourcesFiltering> mavenFilteringComponents
        Since:
        2.4
      • supportMultiLineFiltering

        @Parameter(defaultValue="false")
        private boolean supportMultiLineFiltering
        stop searching endToken at the end of line
        Since:
        2.5
      • fileNameFiltering

        @Parameter(defaultValue="false")
        private boolean fileNameFiltering
        Support filtering of filenames folders etc.
        Since:
        3.0.0
      • skip

        @Parameter(property="maven.resources.skip",
                   defaultValue="false")
        private boolean skip
        You can skip the execution of the plugin if you need to. Its use is NOT RECOMMENDED, but quite convenient on occasion.
        Since:
        3.0.0
    • Constructor Detail

      • ResourcesMojo

        public ResourcesMojo()
    • Method Detail

      • contextualize

        public void contextualize​(org.codehaus.plexus.context.Context context)
                           throws org.codehaus.plexus.context.ContextException
        Specified by:
        contextualize in interface org.codehaus.plexus.personality.plexus.lifecycle.phase.Contextualizable
        Throws:
        org.codehaus.plexus.context.ContextException
      • execute

        public void execute()
                     throws org.apache.maven.plugin.MojoExecutionException
        Specified by:
        execute in interface org.apache.maven.plugin.Mojo
        Throws:
        org.apache.maven.plugin.MojoExecutionException
      • addSeveralSpecialProperties

        private java.util.Properties addSeveralSpecialProperties()
        This solves https://issues.apache.org/jira/browse/MRESOURCES-99.
        BUT:
        This should be done different than defining those properties a second time, cause they have already being defined in Maven Model Builder (package org.apache.maven.model.interpolation) via BuildTimestampValueSource. But those can't be found in the context which can be got from the maven core.
        A solution could be to put those values into the context by Maven core so they are accessible everywhere. (I'm not sure if this is a good idea). Better ideas are always welcome. The problem at the moment is that maven core handles usage of properties and replacements in the model, but does not the resource filtering which needed some of the properties.
        Returns:
        the new instance with those properties.
      • executeUserFilterComponents

        protected void executeUserFilterComponents​(org.apache.maven.shared.filtering.MavenResourcesExecution mavenResourcesExecution)
                                            throws org.apache.maven.plugin.MojoExecutionException,
                                                   org.apache.maven.shared.filtering.MavenFilteringException
        Parameters:
        mavenResourcesExecution - MavenResourcesExecution
        Throws:
        org.apache.maven.plugin.MojoExecutionException - in case of wrong lookup.
        org.apache.maven.shared.filtering.MavenFilteringException - in case of failure.
        Since:
        2.5
      • getCombinedFiltersList

        protected java.util.List<java.lang.String> getCombinedFiltersList()
        Returns:
        The combined filters.
      • isFilteringEnabled

        private boolean isFilteringEnabled​(java.util.Collection<org.apache.maven.model.Resource> theResources)
        Determines whether filtering has been enabled for any resource.
        Parameters:
        theResources - The set of resources to check for filtering, may be null.
        Returns:
        true if at least one resource uses filtering, false otherwise.
      • getResources

        public java.util.List<org.apache.maven.model.Resource> getResources()
        Returns:
        resources
      • setResources

        public void setResources​(java.util.List<org.apache.maven.model.Resource> resources)
        Parameters:
        resources - set resources
      • getOutputDirectory

        public java.io.File getOutputDirectory()
        Returns:
        outputDirectory
      • setOutputDirectory

        public void setOutputDirectory​(java.io.File outputDirectory)
        Parameters:
        outputDirectory - the output folder.
      • isOverwrite

        public boolean isOverwrite()
        Returns:
        overwrite
      • setOverwrite

        public void setOverwrite​(boolean overwrite)
        Parameters:
        overwrite - true to overwrite false otherwise.
      • isIncludeEmptyDirs

        public boolean isIncludeEmptyDirs()
        Returns:
        includeEmptyDirs
      • setIncludeEmptyDirs

        public void setIncludeEmptyDirs​(boolean includeEmptyDirs)
        Parameters:
        includeEmptyDirs - true/false.
      • getFilters

        public java.util.List<java.lang.String> getFilters()
        Returns:
        filters
      • setFilters

        public void setFilters​(java.util.List<java.lang.String> filters)
        Parameters:
        filters - The filters to use.
      • getDelimiters

        public java.util.LinkedHashSet<java.lang.String> getDelimiters()
        Returns:
        delimiters
      • setDelimiters

        public void setDelimiters​(java.util.LinkedHashSet<java.lang.String> delimiters)
        Parameters:
        delimiters - The delimiters to use.
      • setUseDefaultDelimiters

        public void setUseDefaultDelimiters​(boolean useDefaultDelimiters)
        Parameters:
        useDefaultDelimiters - true to use ${*}
      • isSkip

        public boolean isSkip()
        Returns:
        skip