# Class AbstractCopyTask

java.lang.Object
org.gradle.api.internal.AbstractTask
org.gradle.api.DefaultTask
org.gradle.api.internal.ConventionTask
org.gradle.api.tasks.AbstractCopyTask

All Implemented Interfaces:
  `Comparable<Task>, ContentFilterable, CopyProcessingSpec, CopySourceSpec, CopySpec, org.gradle.api.internal.DynamicObjectAware, org.gradle.api.internal.file.copy.CopySpecSource, org.gradle.api.internal.IConventionAware, org.gradle.api.internal.TaskInternal, Named, ExtensionAware, Task, PatternFilterable, Configurable<Task>`

Direct Known Subclasses:
  `AbstractArchiveTask, Copy, Sync`

@NullMarked @DisableCachingByDefault(because="Abstract super-class, not to be instantiated directly") public abstract class AbstractCopyTask extends org.gradle.api.internal.ConventionTask implements CopySpec, org.gradle.api.internal.file.copy.CopySpecSource
`AbstractCopyTask` is the base class for all copy tasks.

Since:
  0.9

- ## Nested Class Summary

  ### Nested classes/interfaces inherited from interface Named

  `Named.Namer`

- ## Field Summary

  ### Fields inherited from interface Task

  `TASK_ACTION, TASK_CONSTRUCTOR_ARGS, TASK_DEPENDS_ON, TASK_DESCRIPTION, TASK_GROUP, TASK_NAME, TASK_OVERWRITE, TASK_TYPE`

- ## Constructor Summary

  Constructors
  Modifier
  Constructor
  Description
  `protected`
  `AbstractCopyTask()`
  Creates a new `AbstractCopyTask`.

- ## Method Summary

  Modifier and Type
  Method
  Description
  `protected void`
  `copy()`
  Copy.
  `protected abstract org.gradle.api.internal.file.copy.CopyAction`
  `createCopyAction()`
  Create copy action.
  `protected org.gradle.api.internal.file.copy.CopyActionExecuter`
  `createCopyActionExecuter()`
  Create copy action executer.
  `protected org.gradle.api.internal.file.copy.CopySpecInternal`
  `createRootSpec()`
  Create root spec.
  `CopyProcessingSpec`
  `dirPermissions(Action<? super ConfigurableFilePermissions> configureAction)`
  Configuration action for specifying directory access permissions.
  `AbstractCopyTask`
  `eachFile(Closure closure)`
  Adds an action to be applied to each file as it about to be copied into its destination.
  `AbstractCopyTask`
  `eachFile(Action<? super FileCopyDetails> action)`
  Adds an action to be applied to each file as it is about to be copied into its destination.
  `AbstractCopyTask`
  `exclude(Closure excludeSpec)`
  Adds an exclude spec.
  `AbstractCopyTask`
  `exclude(Iterable<String> excludes)`
  Adds an Ant style exclude pattern.
  `AbstractCopyTask`
  `exclude(String... excludes)`
  Adds an Ant style exclude pattern.
  `AbstractCopyTask`
  `exclude(Spec<FileTreeElement> excludeSpec)`
  Adds an exclude spec.
  `AbstractCopyTask`
  `expand(Map<String,?> properties)`
  Expands property references in each file as it is copied.
  `AbstractCopyTask`
  `expand(Map<String,?> properties, Action<? super ExpandDetails> action)`
  Expands property references in each file as it is copied.
  `CopyProcessingSpec`
  `filePermissions(Action<? super ConfigurableFilePermissions> configureAction)`
  Configuration action for specifying file access permissions.
  `AbstractCopyTask`
  `filesMatching(Iterable<String> patterns, Action<? super FileCopyDetails> action)`
  Configure the `FileCopyDetails` for each file whose path matches any of the specified Ant-style patterns.
  `AbstractCopyTask`
  `filesMatching(String pattern, Action<? super FileCopyDetails> action)`
  Configure the `FileCopyDetails` for each file whose path matches the specified Ant-style pattern.
  `AbstractCopyTask`
  `filesNotMatching(Iterable<String> patterns, Action<? super FileCopyDetails> action)`
  Configure the `FileCopyDetails` for each file whose path does not match any of the specified Ant-style patterns.
  `AbstractCopyTask`
  `filesNotMatching(String pattern, Action<? super FileCopyDetails> action)`
  Configure the `FileCopyDetails` for each file whose path does not match the specified Ant-style pattern.
  `AbstractCopyTask`
  `filter(Closure closure)`
  Adds a content filter based on the provided closure.
  `AbstractCopyTask`
  `filter(Class<? extends FilterReader> filterType)`
  Adds a content filter to be used during the copy.
  `AbstractCopyTask`
  `filter(Map<String,?> properties, Class<? extends FilterReader> filterType)`
  Adds a content filter to be used during the copy.
  `AbstractCopyTask`
  `filter(Transformer<@Nullable String, String> transformer)`
  Adds a content filter based on the provided transformer.
  `AbstractCopyTask`
  `from(@Nullable Object... sourcePaths)`
  Specifies source files or directories for a copy.
  `AbstractCopyTask`
  `from(Object sourcePath, Closure c)`
  Specifies the source files or directories for a copy and creates a child `CopySourceSpec`.
  `AbstractCopyTask`
  `from(Object sourcePath, Action<? super CopySpec> configureAction)`
  Specifies the source files or directories for a copy and creates a child `CopySpec`.
  `protected abstract org.gradle.api.internal.file.collections.DirectoryFileTreeFactory`
  `getDirectoryFileTreeFactory()`
  `Property<ConfigurableFilePermissions>`
  `getDirPermissions()`
  Property for querying and configuring directory access permissions.
  `protected abstract org.gradle.api.internal.DocumentationRegistry`
  `getDocumentationRegistry()`
  `DuplicatesStrategy`
  `getDuplicatesStrategy()`
  Returns the strategy to use when trying to copy more than one file to the same destination.
  `Set<String>`
  `getExcludes()`
  Returns the set of exclude patterns.
  `protected abstract org.gradle.api.internal.file.FileLookup`
  `getFileLookup()`
  `Property<ConfigurableFilePermissions>`
  `getFilePermissions()`
  Property for querying and configuring file access permissions.
  `protected abstract org.gradle.api.internal.file.FileResolver`
  `getFileResolver()`
  `protected abstract org.gradle.internal.nativeintegration.filesystem.FileSystem`
  `getFileSystem()`
  `String`
  `getFilteringCharset()`
  Gets the charset used to read and write files when filtering.
  `boolean`
  `getIncludeEmptyDirs()`
  Tells if empty target directories will be included in the copy.
  `Set<String>`
  `getIncludes()`
  Returns the set of include patterns.
  `protected abstract org.gradle.internal.reflect.Instantiator`
  `getInstantiator()`
  `protected org.gradle.api.internal.file.copy.CopySpecInternal`
  `getMainSpec()`
  Returns the main spec.
  `protected abstract ObjectFactory`
  `getObjectFactory()`
  `protected abstract org.gradle.api.internal.provider.PropertyFactory`
  `getPropertyFactory()`
  `org.gradle.api.internal.file.copy.CopySpecInternal`
  `getRootSpec()`
  `FileCollection`
  `getSource()`
  Returns the source files for this task.
  `AbstractCopyTask`
  `include(Closure includeSpec)`
  Adds an include spec.
  `AbstractCopyTask`
  `include(Iterable<String> includes)`
  Adds an Ant style include pattern.
  `AbstractCopyTask`
  `include(String... includes)`
  Adds an Ant style include pattern.
  `AbstractCopyTask`
  `include(Spec<FileTreeElement> includeSpec)`
  Adds an include spec.
  `AbstractCopyTask`
  `into(Object destDir)`
  Specifies the destination directory for a copy.
  `AbstractCopyTask`
  `into(Object destPath, Closure configureClosure)`
  Creates and configures a child `CopySpec` with the given destination path.
  `CopySpec`
  `into(Object destPath, Action<? super CopySpec> copySpec)`
  Creates and configures a child `CopySpec` with the given destination path.
  `boolean`
  `isCaseSensitive()`
  Specifies whether case-sensitive pattern matching should be used.
  `AbstractCopyTask`
  `rename(Closure closure)`
  Renames a source file.
  `AbstractCopyTask`
  `rename(String sourceRegEx, String replaceWith)`
  Renames files based on a regular expression.
  `AbstractCopyTask`
  `rename(Pattern sourceRegEx, String replaceWith)`
  Renames files based on a regular expression.
  `AbstractCopyTask`
  `rename(Transformer<@Nullable String, String> renamer)`
  Renames a source file.
  `void`
  `setCaseSensitive(boolean caseSensitive)`
  Specifies whether case-sensitive pattern matching should be used for this CopySpec.
  `void`
  `setDuplicatesStrategy(DuplicatesStrategy strategy)`
  The strategy to use when trying to copy more than one file to the same destination.
  `AbstractCopyTask`
  `setExcludes(Iterable<String> excludes)`
  Set the allowable exclude patterns.
  `void`
  `setFilteringCharset(String charset)`
  Specifies the charset used to read and write files when filtering.
  `void`
  `setIncludeEmptyDirs(boolean includeEmptyDirs)`
  Controls if empty target directories should be included in the copy.
  `AbstractCopyTask`
  `setIncludes(Iterable<String> includes)`
  Set the allowable include patterns.
  `CopySpec`
  `with(CopySpec... sourceSpecs)`
  Adds the given specs as a child of this spec.

  ### Methods inherited from class org.gradle.api.internal.ConventionTask

  `conventionMapping, conventionMapping, getConventionMapping`

  ### Methods inherited from class DefaultTask

  `compareTo, configure, dependsOn, doFirst, doFirst, doFirst, doLast, doLast, doLast, finalizedBy, getActions, getAnt, getDependsOn, getDescription, getDestroyables, getDidWork, getEnabled, getExtensions, getFinalizedBy, getGroup, getInputs, getLocalState, getLogger, getLogging, getMustRunAfter, getName, getOutputs, getPath, getProject, getShouldRunAfter, getState, getTaskDependencies, getTemporaryDir, getTimeout, hasProperty, mustRunAfter, onlyIf, onlyIf, onlyIf, property, setActions, setDependsOn, setDescription, setDidWork, setEnabled, setFinalizedBy, setGroup, setMustRunAfter, setOnlyIf, setOnlyIf, setOnlyIf, setProperty, setShouldRunAfter, shouldRunAfter, usesService`

  ### Methods inherited from class org.gradle.api.internal.AbstractTask

  `acceptServiceReferences, appendParallelSafeAction, doNotTrackState, doNotTrackStateIf, getAsDynamicObject, getIdentityPath, getImpliesSubProjects, getLifecycleDependencies, getLoggingManager, getOnlyIf, getReasonNotToTrackState, getReasonsNotToTrackState, getReasonTaskIsIncompatibleWithConfigurationCache, getRequiredServices, getServices, getSharedResources, getStandardOutputCapture, getTaskActions, getTaskIdentity, getTemporaryDirFactory, hasTaskActions, injectIntoNewInstance, isCompatibleWithConfigurationCache, isEnabled, isHasCustomActions, notCompatibleWithConfigurationCache, prependParallelSafeAction, restoreOnlyIf, restoreTaskActions, service, setImpliesSubProjects`

  ### Methods inherited from class Object

  `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

  ### Methods inherited from interface Task

  `doNotTrackState, notCompatibleWithConfigurationCache, service`

- ## Constructor Details

  - ### AbstractCopyTask

    protected AbstractCopyTask()
    Creates a new `AbstractCopyTask`.
    Since:
      0.9

- ## Method Details

  - ### createRootSpec

    protected org.gradle.api.internal.file.copy.CopySpecInternal createRootSpec()
    Create root spec.
    Since:
      1.8

  - ### createCopyAction

    protected abstract org.gradle.api.internal.file.copy.CopyAction createCopyAction()
    Create copy action.
    Since:
      1.8

  - ### getInstantiator

    @Inject protected abstract org.gradle.internal.reflect.Instantiator getInstantiator()

  - ### getFileSystem

    @Inject protected abstract org.gradle.internal.nativeintegration.filesystem.FileSystem getFileSystem()

  - ### getFileResolver

    @Inject protected abstract org.gradle.api.internal.file.FileResolver getFileResolver()

  - ### getFileLookup

    @Inject protected abstract org.gradle.api.internal.file.FileLookup getFileLookup()

  - ### getDirectoryFileTreeFactory

    @Inject protected abstract org.gradle.api.internal.file.collections.DirectoryFileTreeFactory getDirectoryFileTreeFactory()

  - ### getDocumentationRegistry

    @Inject protected abstract org.gradle.api.internal.DocumentationRegistry getDocumentationRegistry()

  - ### getObjectFactory

    @Inject protected abstract ObjectFactory getObjectFactory()

  - ### getPropertyFactory

    @Inject protected abstract org.gradle.api.internal.provider.PropertyFactory getPropertyFactory()

  - ### copy

    protected void copy()
    Copy.
    Since:
      0.9

  - ### createCopyActionExecuter

    protected org.gradle.api.internal.file.copy.CopyActionExecuter createCopyActionExecuter()
    Create copy action executer.
    Since:
      3.4

  - ### getSource

    @Internal public FileCollection getSource()
    Returns the source files for this task.
    Returns:
      The source files. Never returns null.
    Since:
      0.9

  - ### getRootSpec

    @Internal public org.gradle.api.internal.file.copy.CopySpecInternal getRootSpec()
    Specified by:
      `getRootSpec` in interface `org.gradle.api.internal.file.copy.CopySpecSource`

  - ### getMainSpec

    @Internal protected org.gradle.api.internal.file.copy.CopySpecInternal getMainSpec()
    Returns the main spec.
    Since:
      0.9

  - ### isCaseSensitive

    @Internal public boolean isCaseSensitive()
    Specifies whether case-sensitive pattern matching should be used.
    Specified by:
      `isCaseSensitive` in interface `CopySpec`
    Returns:
      true for case-sensitive matching.

  - ### setCaseSensitive

    public void setCaseSensitive(boolean caseSensitive)
    Specifies whether case-sensitive pattern matching should be used for this CopySpec.
    Specified by:
      `setCaseSensitive` in interface `CopySpec`
    Parameters:
      `caseSensitive` - true for case-sensitive matching.

  - ### getIncludeEmptyDirs

    @Internal public boolean getIncludeEmptyDirs()
    Tells if empty target directories will be included in the copy.
    Specified by:
      `getIncludeEmptyDirs` in interface `CopySpec`
    Returns:
      `true` if empty target directories will be included in the copy, `false` otherwise

  - ### setIncludeEmptyDirs

    public void setIncludeEmptyDirs(boolean includeEmptyDirs)
    Controls if empty target directories should be included in the copy.
    Specified by:
      `setIncludeEmptyDirs` in interface `CopySpec`
    Parameters:
      `includeEmptyDirs` - `true` if empty target directories should be included in the copy, `false` otherwise

  - ### setDuplicatesStrategy

    public void setDuplicatesStrategy(DuplicatesStrategy strategy)
    The strategy to use when trying to copy more than one file to the same destination. Defaults to `DuplicatesStrategy.INHERIT`, the strategy inherited from the parent copy spec. If no explicit deduplication strategy is set, but duplicates are found, an error is thrown.
    Specified by:
      `setDuplicatesStrategy` in interface `CopySpec`

  - ### getDuplicatesStrategy

    @Internal public DuplicatesStrategy getDuplicatesStrategy()
    Returns the strategy to use when trying to copy more than one file to the same destination.

    The value can be set with a case insensitive string of the enum value (e.g. `'exclude'` for `DuplicatesStrategy.EXCLUDE`).

    This strategy can be overridden for individual files by using `CopySpec.eachFile(org.gradle.api.Action)` or `CopySpec.filesMatching(String, org.gradle.api.Action)`.

    Specified by:
      `getDuplicatesStrategy` in interface `CopySpec`
    Returns:
      the strategy to use for files included by this copy spec.
    See Also:
      - `DuplicatesStrategy`

  - ### from

    public AbstractCopyTask from(@Nullable Object... sourcePaths)
    Specifies source files or directories for a copy. The given paths are evaluated as per `Project.files(Object...)`.
    Specified by:
      `from` in interface `CopySourceSpec`
    Specified by:
      `from` in interface `CopySpec`
    Parameters:
      `sourcePaths` - Paths to source files for the copy

  - ### filesMatching

    public AbstractCopyTask filesMatching(String pattern, Action<? super FileCopyDetails> action)
    Configure the `FileCopyDetails` for each file whose path matches the specified Ant-style pattern. This is equivalent to using eachFile() and selectively applying a configuration based on the file's path.
    Specified by:
      `filesMatching` in interface `CopySpec`
    Parameters:
      `pattern` - Ant-style pattern used to match against files' relative paths
      `action` - action called for the FileCopyDetails of each file matching pattern
    Returns:
      this

  - ### filesMatching

    public AbstractCopyTask filesMatching(Iterable<String> patterns, Action<? super FileCopyDetails> action)
    Configure the `FileCopyDetails` for each file whose path matches any of the specified Ant-style patterns. This is equivalent to using eachFile() and selectively applying a configuration based on the file's path.
    Specified by:
      `filesMatching` in interface `CopySpec`
    Parameters:
      `patterns` - Ant-style patterns used to match against files' relative paths
      `action` - action called for the FileCopyDetails of each file matching pattern
    Returns:
      this

  - ### filesNotMatching

    public AbstractCopyTask filesNotMatching(String pattern, Action<? super FileCopyDetails> action)
    Configure the `FileCopyDetails` for each file whose path does not match the specified Ant-style pattern. This is equivalent to using eachFile() and selectively applying a configuration based on the file's path.
    Specified by:
      `filesNotMatching` in interface `CopySpec`
    Parameters:
      `pattern` - Ant-style pattern used to match against files' relative paths
      `action` - action called for the FileCopyDetails of each file that does not match pattern
    Returns:
      this

  - ### filesNotMatching

    public AbstractCopyTask filesNotMatching(Iterable<String> patterns, Action<? super FileCopyDetails> action)
    Configure the `FileCopyDetails` for each file whose path does not match any of the specified Ant-style patterns. This is equivalent to using eachFile() and selectively applying a configuration based on the file's path.
    Specified by:
      `filesNotMatching` in interface `CopySpec`
    Parameters:
      `patterns` - Ant-style patterns used to match against files' relative paths
      `action` - action called for the FileCopyDetails of each file that does not match any pattern
    Returns:
      this

  - ### from

    public AbstractCopyTask from(Object sourcePath, Closure c)
    Specifies the source files or directories for a copy and creates a child `CopySourceSpec`. The given source path is evaluated as per `Project.files(Object...)` .
    Specified by:
      `from` in interface `CopySourceSpec`
    Specified by:
      `from` in interface `CopySpec`
    Parameters:
      `sourcePath` - Path to source for the copy
      `c` - closure for configuring the child CopySourceSpec

  - ### from

    public AbstractCopyTask from(Object sourcePath, Action<? super CopySpec> configureAction)
    Specifies the source files or directories for a copy and creates a child `CopySpec`. The given source path is evaluated as per `Project.files(Object...)` .
    Specified by:
      `from` in interface `CopySourceSpec`
    Specified by:
      `from` in interface `CopySpec`
    Parameters:
      `sourcePath` - Path to source for the copy
      `configureAction` - action for configuring the child CopySpec

  - ### with

    public CopySpec with(CopySpec... sourceSpecs)
    Adds the given specs as a child of this spec.

        def contentSpec = copySpec {
          from("content") {
            include "**/*.txt"
          }
        }

        task copy(type: Copy) {
          into "$buildDir/copy"
          with contentSpec
        }

    Specified by:
      `with` in interface `CopySpec`
    Parameters:
      `sourceSpecs` - The specs to add
    Returns:
      this

  - ### into

    public AbstractCopyTask into(Object destDir)
    Specifies the destination directory for a copy. The destination is evaluated as per `Project.file(Object)`.
    Specified by:
      `into` in interface `CopyProcessingSpec`
    Specified by:
      `into` in interface `CopySpec`
    Parameters:
      `destDir` - Path to the destination directory for a Copy
    Returns:
      this

  - ### into

    public AbstractCopyTask into(Object destPath, Closure configureClosure)
    Creates and configures a child `CopySpec` with the given destination path. The destination is evaluated as per `Project.file(Object)`.
    Specified by:
      `into` in interface `CopySpec`
    Parameters:
      `destPath` - Path to the destination directory for a Copy
      `configureClosure` - The closure to use to configure the child `CopySpec`.
    Returns:
      this

  - ### into

    public CopySpec into(Object destPath, Action<? super CopySpec> copySpec)
    Creates and configures a child `CopySpec` with the given destination path. The destination is evaluated as per `Project.file(Object)`.
    Specified by:
      `into` in interface `CopySpec`
    Parameters:
      `destPath` - Path to the destination directory for a Copy
      `copySpec` - The action to use to configure the child `CopySpec`.
    Returns:
      this

  - ### include

    public AbstractCopyTask include(String... includes)
    Adds an Ant style include pattern. This method may be called multiple times to append new patterns and multiple patterns may be specified in a single call. If includes are not provided, then all files in this container will be included. If includes are provided, then a file must match at least one of the include patterns to be processed.
    Specified by:
      `include` in interface `CopySpec`
    Specified by:
      `include` in interface `PatternFilterable`
    Parameters:
      `includes` - a vararg list of include patterns
    Returns:
      this
    See Also:
      - Pattern Format

  - ### include

    public AbstractCopyTask include(Iterable<String> includes)
    Adds an Ant style include pattern. This method may be called multiple times to append new patterns and multiple patterns may be specified in a single call. If includes are not provided, then all files in this container will be included. If includes are provided, then a file must match at least one of the include patterns to be processed.
    Specified by:
      `include` in interface `CopySpec`
    Specified by:
      `include` in interface `PatternFilterable`
    Parameters:
      `includes` - a Iterable providing more include patterns
    Returns:
      this
    See Also:
      - Pattern Format

  - ### include

    public AbstractCopyTask include(Spec<FileTreeElement> includeSpec)
    Adds an include spec. This method may be called multiple times to append new specs. If includes are not provided, then all files in this container will be included. If includes are provided, then a file must match at least one of the include patterns or specs to be included.
    Specified by:
      `include` in interface `CopySpec`
    Specified by:
      `include` in interface `PatternFilterable`
    Parameters:
      `includeSpec` - the spec to add
    Returns:
      this
    See Also:
      - Pattern Format

  - ### include

    public AbstractCopyTask include(Closure includeSpec)
    Adds an include spec. This method may be called multiple times to append new specs. The given closure is passed a `FileTreeElement` as its parameter. If includes are not provided, then all files in this container will be included. If includes are provided, then a file must match at least one of the include patterns or specs to be included.
    Specified by:
      `include` in interface `CopySpec`
    Specified by:
      `include` in interface `PatternFilterable`
    Parameters:
      `includeSpec` - the spec to add
    Returns:
      this
    See Also:
      - Pattern Format

  - ### exclude

    public AbstractCopyTask exclude(String... excludes)
    Adds an Ant style exclude pattern. This method may be called multiple times to append new patterns and multiple patterns may be specified in a single call. If excludes are not provided, then no files will be excluded. If excludes are provided, then files must not match any exclude pattern to be processed.
    Specified by:
      `exclude` in interface `CopySpec`
    Specified by:
      `exclude` in interface `PatternFilterable`
    Parameters:
      `excludes` - a vararg list of exclude patterns
    Returns:
      this
    See Also:
      - Pattern Format

  - ### exclude

    public AbstractCopyTask exclude(Iterable<String> excludes)
    Adds an Ant style exclude pattern. This method may be called multiple times to append new patterns and multiple patterns may be specified in a single call. If excludes are not provided, then no files will be excluded. If excludes are provided, then files must not match any exclude pattern to be processed.
    Specified by:
      `exclude` in interface `CopySpec`
    Specified by:
      `exclude` in interface `PatternFilterable`
    Parameters:
      `excludes` - a Iterable providing new exclude patterns
    Returns:
      this
    See Also:
      - Pattern Format

  - ### exclude

    public AbstractCopyTask exclude(Spec<FileTreeElement> excludeSpec)
    Adds an exclude spec. This method may be called multiple times to append new specs. If excludes are not provided, then no files will be excluded. If excludes are provided, then files must not match any exclude pattern to be processed.
    Specified by:
      `exclude` in interface `CopySpec`
    Specified by:
      `exclude` in interface `PatternFilterable`
    Parameters:
      `excludeSpec` - the spec to add
    Returns:
      this
    See Also:
      - Pattern Format

  - ### exclude

    public AbstractCopyTask exclude(Closure excludeSpec)
    Adds an exclude spec. This method may be called multiple times to append new specs.The given closure is passed a `FileTreeElement` as its parameter. The closure should return true or false. Example:

        copySpec {
          from 'source'
          into 'destination'
          //an example of excluding files from certain configuration:
          exclude { it.file in configurations.someConf.files }
        }

    If excludes are not provided, then no files will be excluded. If excludes are provided, then files must not match any exclude pattern to be processed.
    Specified by:
      `exclude` in interface `CopySpec`
    Specified by:
      `exclude` in interface `PatternFilterable`
    Parameters:
      `excludeSpec` - the spec to add
    Returns:
      this
    See Also:
      - Pattern Format

  - ### setIncludes

    public AbstractCopyTask setIncludes(Iterable<String> includes)
    Set the allowable include patterns. Note that unlike `PatternFilterable.include(Iterable)` this replaces any previously defined includes.
    Specified by:
      `setIncludes` in interface `CopySpec`
    Specified by:
      `setIncludes` in interface `PatternFilterable`
    Parameters:
      `includes` - an Iterable providing new include patterns
    Returns:
      this
    See Also:
      - Pattern Format

  - ### getIncludes

    @Internal public Set<String> getIncludes()
    Returns the set of include patterns.
    Specified by:
      `getIncludes` in interface `PatternFilterable`
    Returns:
      The include patterns. Returns an empty set when there are no include patterns.

  - ### setExcludes

    public AbstractCopyTask setExcludes(Iterable<String> excludes)
    Set the allowable exclude patterns. Note that unlike `PatternFilterable.exclude(Iterable)` this replaces any previously defined excludes.
    Specified by:
      `setExcludes` in interface `CopySpec`
    Specified by:
      `setExcludes` in interface `PatternFilterable`
    Parameters:
      `excludes` - an Iterable providing new exclude patterns
    Returns:
      this
    See Also:
      - Pattern Format

  - ### getExcludes

    @Internal public Set<String> getExcludes()
    Returns the set of exclude patterns.
    Specified by:
      `getExcludes` in interface `PatternFilterable`
    Returns:
      The exclude patterns. Returns an empty set when there are no exclude patterns.

  - ### rename

    public AbstractCopyTask rename(Closure closure)
    Renames a source file. The closure will be called with a single parameter, the name of the file. The closure should return a String object with a new target name. The closure may return null, in which case the original name will be used.
    Specified by:
      `rename` in interface `CopyProcessingSpec`
    Specified by:
      `rename` in interface `CopySpec`
    Parameters:
      `closure` - rename closure
    Returns:
      this

  - ### rename

    public AbstractCopyTask rename(Transformer<@Nullable String, String> renamer)
    Renames a source file. The function will be called with a single parameter, the name of the file. The function should return a new target name. The function may return null, in which case the original name will be used.
    Specified by:
      `rename` in interface `CopyProcessingSpec`
    Specified by:
      `rename` in interface `CopySpec`
    Parameters:
      `renamer` - rename function
    Returns:
      this

  - ### rename

    public AbstractCopyTask rename(String sourceRegEx, String replaceWith)
    Renames files based on a regular expression. Uses java.util.regex type of regular expressions. Note that the replace string should use the '$1' syntax to refer to capture groups in the source regular expression. Files that do not match the source regular expression will be copied with the original name.

    Example:

        rename '(.*)_OEM_BLUE_(.*)', '$1$2'

    would map the file 'style_OEM_BLUE_.css' to 'style.css'
    Specified by:
      `rename` in interface `CopyProcessingSpec`
    Specified by:
      `rename` in interface `CopySpec`
    Parameters:
      `sourceRegEx` - Source regular expression
      `replaceWith` - Replacement string (use $ syntax for capture groups)
    Returns:
      this

  - ### rename

    public AbstractCopyTask rename(Pattern sourceRegEx, String replaceWith)
    Renames files based on a regular expression. See `CopyProcessingSpec.rename(String, String)`.
    Specified by:
      `rename` in interface `CopyProcessingSpec`
    Specified by:
      `rename` in interface `CopySpec`
    Parameters:
      `sourceRegEx` - Source regular expression
      `replaceWith` - Replacement string (use $ syntax for capture groups)
    Returns:
      this

  - ### filter

    public AbstractCopyTask filter(Map<String,?> properties, Class<? extends FilterReader> filterType)

    Adds a content filter to be used during the copy. Multiple calls to filter, add additional filters to the filter chain. Each filter should implement `java.io.FilterReader`. Include `org.apache.tools.ant.filters.*` for access to all the standard Ant filters.

    Filter properties may be specified using groovy map syntax.

    Examples:

           filter(HeadFilter, lines:25, skip:2)
           filter(ReplaceTokens, tokens:[copyright:'2009', version:'2.3.1'])

    Specified by:
      `filter` in interface `ContentFilterable`
    Specified by:
      `filter` in interface `CopySpec`
    Parameters:
      `properties` - map of filter properties
      `filterType` - Class of filter to add
    Returns:
      this

  - ### filter

    public AbstractCopyTask filter(Class<? extends FilterReader> filterType)

    Adds a content filter to be used during the copy. Multiple calls to filter, add additional filters to the filter chain. Each filter should implement `java.io.FilterReader`. Include `org.apache.tools.ant.filters.*` for access to all the standard Ant filters.

    Examples:

           filter(StripJavaComments)
           filter(com.mycompany.project.CustomFilter)

    Specified by:
      `filter` in interface `ContentFilterable`
    Specified by:
      `filter` in interface `CopySpec`
    Parameters:
      `filterType` - Class of filter to add
    Returns:
      this

  - ### filter

    public AbstractCopyTask filter(Closure closure)
    Adds a content filter based on the provided closure. The Closure will be called with each line (stripped of line endings) and should return a String to replace the line or `null` to remove the line. If every line is removed, the result will be an empty file, not an absent one.
    Specified by:
      `filter` in interface `ContentFilterable`
    Specified by:
      `filter` in interface `CopySpec`
    Parameters:
      `closure` - to implement line based filtering
    Returns:
      this

  - ### filter

    public AbstractCopyTask filter(Transformer<@Nullable String, String> transformer)
    Adds a content filter based on the provided transformer. The Closure will be called with each line (stripped of line endings) and should return a String to replace the line or `null` to remove the line. If every line is removed, the result will be an empty file, not an absent one.
    Specified by:
      `filter` in interface `ContentFilterable`
    Specified by:
      `filter` in interface `CopySpec`
    Parameters:
      `transformer` - to implement line based filtering
    Returns:
      this

  - ### expand

    public AbstractCopyTask expand(Map<String,?> properties)

    Expands property references in each file as it is copied. More specifically, each file is transformed using Groovy's `SimpleTemplateEngine`. This means you can use simple property references, such as `$property` or `${property}` in the file. You can also include arbitrary Groovy code in the file, such as `${version ?: 'unknown'}` or `${classpath*.name.join(' ')}`

    Note that all escape sequences (`\n`, `\t`, `\\`, etc) are converted to the symbols they represent, so, for example, `\n` becomes newline. If this is undesirable then `ContentFilterable.expand(Map, Action)` should be used to disable this behavior.

    Specified by:
      `expand` in interface `ContentFilterable`
    Specified by:
      `expand` in interface `CopySpec`
    Parameters:
      `properties` - reference-to-value map for substitution
    Returns:
      this

  - ### expand

    public AbstractCopyTask expand(Map<String,?> properties, Action<? super ExpandDetails> action)

    Expands property references in each file as it is copied. More specifically, each file is transformed using Groovy's `SimpleTemplateEngine`. This means you can use simple property references, such as `$property` or `${property}` in the file. You can also include arbitrary Groovy code in the file, such as `${version ?: 'unknown'}` or `${classpath*.name.join(' ')}`. The template engine can be configured with the provided action.

    Note that by default all escape sequences (`\n`, `\t`, `\\`, etc) are converted to the symbols they represent, so, for example, `\n` becomes newline. This behavior is controlled by `ExpandDetails.getEscapeBackslash()` property. It should be set to `true` to disable escape sequences conversion:

         expand(one: '1', two: 2) {
             escapeBackslash = true
         }

    Specified by:
      `expand` in interface `ContentFilterable`
    Specified by:
      `expand` in interface `CopySpec`
    Parameters:
      `properties` - reference-to-value map for substitution
      `action` - action to perform additional configuration of the underlying template engine
    Returns:
      this

  - ### getFilePermissions

    @Internal public Property<ConfigurableFilePermissions> getFilePermissions()
    Property for querying and configuring file access permissions. If the property has no value set, that means that existing permissions are preserved. It is dependent on the copy action implementation whether these permissions will actually be applied. For details see `ConfigurableFilePermissions`.
    Specified by:
      `getFilePermissions` in interface `CopyProcessingSpec`

  - ### filePermissions

    public CopyProcessingSpec filePermissions(Action<? super ConfigurableFilePermissions> configureAction)
    Configuration action for specifying file access permissions. For details see `ConfigurableFilePermissions`.
    Specified by:
      `filePermissions` in interface `CopyProcessingSpec`

  - ### getDirPermissions

    @Internal public Property<ConfigurableFilePermissions> getDirPermissions()
    Property for querying and configuring directory access permissions. If the property has no value set, that means that existing permissions are preserved. It is dependent on the copy action implementation whether these permissions will actually be applied. For details see `ConfigurableFilePermissions`.
    Specified by:
      `getDirPermissions` in interface `CopyProcessingSpec`

  - ### dirPermissions

    public CopyProcessingSpec dirPermissions(Action<? super ConfigurableFilePermissions> configureAction)
    Configuration action for specifying directory access permissions. For details see `ConfigurableFilePermissions`.
    Specified by:
      `dirPermissions` in interface `CopyProcessingSpec`

  - ### eachFile

    public AbstractCopyTask eachFile(Action<? super FileCopyDetails> action)
    Adds an action to be applied to each file as it is about to be copied into its destination. The action can change the destination path of the file, filter the contents of the file, or exclude the file from the result entirely. Actions are executed in the order added, and are inherited from the parent spec.
    Specified by:
      `eachFile` in interface `CopyProcessingSpec`
    Specified by:
      `eachFile` in interface `CopySpec`
    Parameters:
      `action` - The action to execute.
    Returns:
      this

  - ### eachFile

    public AbstractCopyTask eachFile(Closure closure)
    Adds an action to be applied to each file as it about to be copied into its destination. The given closure is called with a `FileCopyDetails` as its parameter. Actions are executed in the order added, and are inherited from the parent spec.
    Specified by:
      `eachFile` in interface `CopyProcessingSpec`
    Specified by:
      `eachFile` in interface `CopySpec`
    Parameters:
      `closure` - The action to execute.
    Returns:
      this

  - ### getFilteringCharset

    @Internal public String getFilteringCharset()
    Gets the charset used to read and write files when filtering. By default, the JVM default charset is used.
    Specified by:
      `getFilteringCharset` in interface `CopySpec`
    Returns:
      the charset used to read and write files when filtering

  - ### setFilteringCharset

    public void setFilteringCharset(String charset)
    Specifies the charset used to read and write files when filtering.
    Specified by:
      `setFilteringCharset` in interface `CopySpec`
    Parameters:
      `charset` - the name of the charset to use when filtering files