Class ResourcesMojo
- java.lang.Object
-
- org.apache.maven.plugin.AbstractMojo
-
- org.apache.maven.plugins.resources.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 implementsMavenResourcesFiltering.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 lineprotected 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.
-
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)
-
-
-
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
anddefault-testResources
to supply different configurations for the two different types of resources. By supplyingextraFilters
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 tofalse
. 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
-
-
Method Detail
-
contextualize
public void contextualize(org.codehaus.plexus.context.Context context) throws org.codehaus.plexus.context.ContextException
- Specified by:
contextualize
in interfaceorg.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 interfaceorg.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 benull
.- 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
- setresources
-
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.
-
isUseDefaultDelimiters
public boolean isUseDefaultDelimiters()
- Returns:
useDefaultDelimiters
-
setUseDefaultDelimiters
public void setUseDefaultDelimiters(boolean useDefaultDelimiters)
- Parameters:
useDefaultDelimiters
- true to use${*}
-
isSkip
public boolean isSkip()
- Returns:
skip
-
-