Please wait. This can take some minutes ...
Many resources are needed to download a project. Please understand that we have to compensate our server costs. Thank you in advance.
Project price only 1 $
You can buy this project and download/modify it how often you want.
org.apache.maven.shared.filtering.MavenResourcesExecution Maven / Gradle / Ivy
Go to download
A component to assist in filtering of resource files with properties from a Maven project.
package org.apache.maven.shared.filtering;
/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*/
import java.io.File;
import java.io.Reader;
import java.util.ArrayList;
import java.util.List;
import org.apache.maven.execution.MavenSession;
import org.apache.maven.model.Resource;
import org.apache.maven.project.MavenProject;
import org.apache.maven.shared.utils.io.FileUtils;
import org.apache.maven.shared.utils.io.FileUtils.FilterWrapper;
import org.codehaus.plexus.interpolation.StringSearchInterpolator;
import org.codehaus.plexus.interpolation.ValueSource;
/**
* A bean to configure a resources filtering execution.
*
* @author Olivier Lamy
*/
public class MavenResourcesExecution
extends AbstractMavenFilteringRequest
{
private List resources;
private File outputDirectory;
private List nonFilteredFileExtensions;
private List filterWrappers;
private File resourcesBaseDirectory;
private boolean useDefaultFilterWrappers = false;
private boolean filterFilenames = false;
private String encoding;
/**
* By default files like {@code .gitignore}, {@code .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 {@code 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/**, **/.hgignore,
* GIT: **/.git, **/.gitignore, **/.gitattributes, **/.git/**
* Bitkeeper: **/BitKeeper, **/BitKeeper/**, **/ChangeSet,
* **/ChangeSet/**
* Darcs: **/_darcs, **/_darcs/**, **/.darcsrepo,
* **/.darcsrepo/****/-darcs-backup*, **/.darcs-temp-mail
*
*
* @since 3.1.0
*/
private boolean addDefaultExcludes = true;
/**
* Overwrite existing files even if the destination files are newer. false
by default.
*
* @since 1.0-beta-2
*/
private boolean overwrite = false;
/**
* Copy any empty directories included in the Resources.
*
* @since 1.0-beta-2
*/
private boolean includeEmptyDirs = false;
/**
* Do not stop trying to filter tokens when reaching EOL.
*
* @since 1.0
*/
private boolean supportMultiLineFiltering;
/**
* Do nothing.
*/
public MavenResourcesExecution()
{
// no op
}
/**
* As we use a Maven project useDefaultFilterWrappers
will be set to true
. The
* {@code useDefaultExcludes} is set to {@code true}.
*
* @param resources The list of resources.
* @param outputDirectory The output directory.
* @param mavenProject The maven project.
* @param encoding The given encoding.
* @param fileFilters The file filters.
* @param nonFilteredFileExtensions The extensions which should not being filtered.
* @param mavenSession The maven session.
*/
public MavenResourcesExecution( List resources, File outputDirectory, MavenProject mavenProject,
String encoding, List fileFilters, List nonFilteredFileExtensions,
MavenSession mavenSession )
{
super( mavenProject, fileFilters, mavenSession );
this.encoding = encoding;
this.resources = resources;
this.outputDirectory = outputDirectory;
this.nonFilteredFileExtensions = nonFilteredFileExtensions;
this.useDefaultFilterWrappers = true;
this.addDefaultExcludes = true;
this.resourcesBaseDirectory = mavenProject.getBasedir();
}
/**
* @param resources The list of resources.
* @param outputDirectory The output directory.
* @param encoding The given encoding.
* @param filterWrappers The list of filter wrappers.
* @param resourcesBaseDirectory The resources base directory.
* @param nonFilteredFileExtensions The list of extensions which should not being filtered.
*/
public MavenResourcesExecution( List resources, File outputDirectory, String encoding,
List filterWrappers, File resourcesBaseDirectory,
List nonFilteredFileExtensions )
{
this();
this.resources = resources;
this.outputDirectory = outputDirectory;
this.filterWrappers = filterWrappers;
this.nonFilteredFileExtensions = nonFilteredFileExtensions;
this.resourcesBaseDirectory = resourcesBaseDirectory;
this.useDefaultFilterWrappers = false;
setEncoding( encoding );
}
/**
* Return the encoding.
*
* @return Current encoding.
*/
public String getEncoding()
{
return encoding;
}
/**
* Set the value for encoding.
*
* @param encoding Give the new value for encoding.
*/
public void setEncoding( String encoding )
{
this.encoding = encoding;
}
/**
* @return List of {@link org.apache.maven.model.Resource}
*/
public List getResources()
{
return resources;
}
/**
* @param resources List of {@link org.apache.maven.model.Resource}
*/
public void setResources( List resources )
{
this.resources = resources;
}
/**
* @return The output directory.
*/
public File getOutputDirectory()
{
return outputDirectory;
}
/**
* @param outputDirectory The output directory.
*/
public void setOutputDirectory( File outputDirectory )
{
this.outputDirectory = outputDirectory;
}
/**
* @return List of {@link String} file extensions not to filter
*/
public List getNonFilteredFileExtensions()
{
return nonFilteredFileExtensions;
}
/**
* @param nonFilteredFileExtensions List of {@link String} file extensions to not filter
*/
public void setNonFilteredFileExtensions( List nonFilteredFileExtensions )
{
this.nonFilteredFileExtensions = nonFilteredFileExtensions;
}
/**
* @return List of {@link FileUtils.FilterWrapper}
*/
public List getFilterWrappers()
{
return filterWrappers;
}
/**
* @param filterWrappers List of {@link FileUtils.FilterWrapper}
*/
public void setFilterWrappers( List filterWrappers )
{
this.filterWrappers = filterWrappers;
}
/**
* @param filterWrapper The filter wrapper which should be added.
*/
public void addFilterWrapper( FilterWrapper filterWrapper )
{
if ( this.filterWrappers == null )
{
this.filterWrappers = new ArrayList();
}
this.filterWrappers.add( filterWrapper );
}
/**
* @param valueSource {@link ValueSource}
* @param startExp start token like ${
* @param endExp endToken }
* @param escapeString The escape string.
* @param multiLineFiltering do we support or use filtering on multi lines with start and endtoken on multi lines
* @since 1.0
*/
public void addFilerWrapperWithEscaping( final ValueSource valueSource, final String startExp, final String endExp,
final String escapeString, final boolean multiLineFiltering )
{
addFilterWrapper( new FileUtils.FilterWrapper()
{
public Reader getReader( Reader reader )
{
StringSearchInterpolator propertiesInterpolator = new StringSearchInterpolator( startExp, endExp );
propertiesInterpolator.addValueSource( valueSource );
propertiesInterpolator.setEscapeString( escapeString );
InterpolatorFilterReaderLineEnding interpolatorFilterReader =
new InterpolatorFilterReaderLineEnding( reader, propertiesInterpolator, startExp, endExp,
multiLineFiltering );
interpolatorFilterReader.setInterpolateWithPrefixPattern( false );
return interpolatorFilterReader;
}
} );
}
/**
* @return The resource base directory.
*/
public File getResourcesBaseDirectory()
{
return resourcesBaseDirectory;
}
/**
* @param resourcesBaseDirectory Set the resource base directory.
*/
public void setResourcesBaseDirectory( File resourcesBaseDirectory )
{
this.resourcesBaseDirectory = resourcesBaseDirectory;
}
/**
* @return use default filter wrapper
*/
public boolean isUseDefaultFilterWrappers()
{
return useDefaultFilterWrappers;
}
/**
* @param useDefaultFilterWrappers {@link #useDefaultFilterWrappers}
*/
public void setUseDefaultFilterWrappers( boolean useDefaultFilterWrappers )
{
this.useDefaultFilterWrappers = useDefaultFilterWrappers;
}
/**
* @return add the default excludes.
*/
public boolean isAddDefaultExcludes()
{
return addDefaultExcludes;
}
/**
* @param addDefaultExcludes {@link #addDefaultExcludes}
*/
public void setAddDefaultExcludes( boolean addDefaultExcludes )
{
this.addDefaultExcludes = addDefaultExcludes;
}
/**
* Overwrite existing files even if the destination files are newer.
*
* @return {@link #overwrite}
* @since 1.0-beta-2
*/
public boolean isOverwrite()
{
return overwrite;
}
/**
* Overwrite existing files even if the destination files are newer.
*
* @param overwrite overwrite true or false.
* @since 1.0-beta-2
*/
public void setOverwrite( boolean overwrite )
{
this.overwrite = overwrite;
}
/**
* Copy any empty directories included in the Resources.
*
* @return {@link #includeEmptyDirs}
* @since 1.0-beta-2
*/
public boolean isIncludeEmptyDirs()
{
return includeEmptyDirs;
}
/**
* Copy any empty directories included in the Resources.
*
* @param includeEmptyDirs {@code true} to include empty directories, otherwise {@code false}.
* @since 1.0-beta-2
*/
public void setIncludeEmptyDirs( boolean includeEmptyDirs )
{
this.includeEmptyDirs = includeEmptyDirs;
}
/**
* @return {@code true} if filenames are filtered, otherwise {@code false}
* @since 1.2
*/
public boolean isFilterFilenames()
{
return filterFilenames;
}
/**
* @param filterFilenames {@code true} if filenames should be filtered, otherwise {@code false}
* @since 1.2
*/
public void setFilterFilenames( boolean filterFilenames )
{
this.filterFilenames = filterFilenames;
}
/**
* @return {@link MavenResourcesExecution}
*/
public MavenResourcesExecution copyOf()
{
MavenResourcesExecution mre = new MavenResourcesExecution();
mre.setAdditionalProperties( mre.getAdditionalProperties() );
mre.setEncoding( mre.getEncoding() );
mre.setEscapedBackslashesInFilePath( mre.isEscapedBackslashesInFilePath() );
mre.setEscapeString( mre.getEscapeString() );
mre.setFileFilters( copyList( mre.getFileFilters() ) );
mre.setFilterWrappers( copyList( mre.getFilterWrappers() ) );
mre.setIncludeEmptyDirs( mre.isIncludeEmptyDirs() );
mre.setInjectProjectBuildFilters( mre.isInjectProjectBuildFilters() );
mre.setMavenProject( mre.getMavenProject() );
mre.setMavenSession( mre.getMavenSession() );
mre.setNonFilteredFileExtensions( copyList( mre.getNonFilteredFileExtensions() ) );
mre.setOutputDirectory( mre.getOutputDirectory() );
mre.setOverwrite( mre.isOverwrite() );
mre.setProjectStartExpressions( copyList( mre.getProjectStartExpressions() ) );
mre.setResources( copyList( mre.getResources() ) );
mre.setResourcesBaseDirectory( mre.getResourcesBaseDirectory() );
mre.setUseDefaultFilterWrappers( mre.isUseDefaultFilterWrappers() );
mre.setAddDefaultExcludes( mre.isAddDefaultExcludes() );
mre.setSupportMultiLineFiltering( mre.isSupportMultiLineFiltering() );
return mre;
}
private List copyList( List lst )
{
if ( lst == null )
{
return null;
}
else if ( lst.isEmpty() )
{
return new ArrayList();
}
else
{
return new ArrayList( lst );
}
}
/** {@inheritDoc} */
public boolean isSupportMultiLineFiltering()
{
return supportMultiLineFiltering;
}
/** {@inheritDoc} */
public void setSupportMultiLineFiltering( boolean supportMultiLineFiltering )
{
this.supportMultiLineFiltering = supportMultiLineFiltering;
}
}