org.gradle.api.file
Interface CopySpec

All Superinterfaces:
ContentFilterable, CopyProcessingSpec, CopySourceSpec, PatternFilterable
All Known Implementing Classes:
AbstractArchiveTask, AbstractCopyTask, Copy, Sync, Tar, Zip

public interface CopySpec
extends CopySourceSpec, CopyProcessingSpec, PatternFilterable

A set of specifications for copying files. This includes:

CopySpecs may be nested by passing a closure to one of the from methods. The closure creates a child CopySpec and delegates methods in the closure to the child. Child CopySpecs inherit any values specified in the parent. This allows constructs like:
 into('webroot')
 exclude('**/.svn/**')
 from('src/main/webapp') {
    include '**/*.jsp'
 }
 from('src/main/js') {
    include '**/*.js'
 }
 
In this example, the into and exclude specifications at the root level are inherited by the two child CopySpecs.

See Also:
Copy Task, Project.copy()

Method Summary
 CopySpec eachFile(Action<? super FileCopyDetails> action)
          Adds an action to be applied to each file as it about to be copied into its destination.
 CopySpec eachFile(Closure closure)
          Adds an action to be applied to each file as it about to be copied into its destination.
 CopySpec exclude(Closure excludeSpec)
          Adds an exclude spec.
 CopySpec exclude(Iterable<String> excludes)
          Adds an ANT style exclude pattern.
 CopySpec exclude(Spec<FileTreeElement> excludeSpec)
          Adds an exclude spec.
 CopySpec exclude(String... excludes)
          Adds an ANT style exclude pattern.
 CopySpec expand(Map<String,?> properties)
          Expands property references in each file as it is copied.
 CopySpec filter(Class<? extends FilterReader> filterType)
          Adds a content filter to be used during the copy.
 CopySpec filter(Closure closure)
          Adds a content filter based on the provided closure.
 CopySpec filter(Map<String,?> properties, Class<? extends FilterReader> filterType)
          Adds a content filter to be used during the copy.
 CopySpec from(Object... sourcePaths)
          Specifies source files or directories for a copy.
 CopySpec from(Object sourcePath, Closure c)
          Specifies the source files or directories for a copy and creates a child CopySourceSpec.
 CopySpec include(Closure includeSpec)
          Adds an include spec.
 CopySpec include(Iterable<String> includes)
          Adds an ANT style include pattern.
 CopySpec include(Spec<FileTreeElement> includeSpec)
          Adds an include spec.
 CopySpec include(String... includes)
          Adds an ANT style include pattern.
 CopySpec into(Object destPath)
          Specifies the destination directory for a copy.
 CopySpec into(Object destPath, Closure configureClosure)
          Creates and configures a child CopySpec with the given destination path.
 boolean isCaseSensitive()
          Returns true if this CopySpec uses case-sensitive pattern matching.
 CopySpec rename(Closure closure)
          Renames a source file to a different relative location under the target directory.
 CopyProcessingSpec rename(Pattern sourceRegEx, String replaceWith)
          Renames files based on a regular expression.
 CopySpec rename(String sourceRegEx, String replaceWith)
          Renames files based on a regular expression.
 void setCaseSensitive(boolean caseSensitive)
          Specifies whether case-sensitive pattern matching should be used for this CopySpec.
 CopySpec setExcludes(Iterable<String> excludes)
          Set the allowable exclude patterns.
 CopySpec 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 interface org.gradle.api.file.CopyProcessingSpec
getDirMode, getFileMode, setDirMode, setFileMode
 
Methods inherited from interface org.gradle.api.tasks.util.PatternFilterable
getExcludes, getIncludes
 

Method Detail

isCaseSensitive

boolean isCaseSensitive()
Returns true if this CopySpec uses case-sensitive pattern matching. The default is true.

Returns:
true for case-sensitive matching.

setCaseSensitive

void setCaseSensitive(boolean caseSensitive)
Specifies whether case-sensitive pattern matching should be used for this CopySpec.

Parameters:
caseSensitive - true for case-sensitive matching.

with

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

Parameters:
sourceSpecs - The specs to add
Returns:
this

from

CopySpec from(Object... sourcePaths)
Specifies source files or directories for a copy. The given paths are evaluated as for Project.files(Object...).

Specified by:
from in interface CopySourceSpec
Parameters:
sourcePaths - Paths to source files for the copy

from

CopySpec 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 for Project.files(Object...) .

Specified by:
from in interface CopySourceSpec
Parameters:
sourcePath - Path to source for the copy
c - closure for configuring the child CopySourceSpec

setIncludes

CopySpec 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 PatternFilterable
Parameters:
includes - an Iterable providing new include patterns
Returns:
this
See Also:
Pattern Format

setExcludes

CopySpec 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 PatternFilterable
Parameters:
excludes - an Iterable providing new exclude patterns
Returns:
this
See Also:
Pattern Format

include

CopySpec 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 PatternFilterable
Parameters:
includes - a vararg list of include patterns
Returns:
this
See Also:
Pattern Format

include

CopySpec 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 PatternFilterable
Parameters:
includes - a Iterable providing more include patterns
Returns:
this
See Also:
Pattern Format

include

CopySpec 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 PatternFilterable
Parameters:
includeSpec - the spec to add
Returns:
this
See Also:
Pattern Format

include

CopySpec 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 PatternFilterable
Parameters:
includeSpec - the spec to add
Returns:
this
See Also:
Pattern Format

exclude

CopySpec 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 PatternFilterable
Parameters:
excludes - a vararg list of exclude patterns
Returns:
this
See Also:
Pattern Format

exclude

CopySpec 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 PatternFilterable
Parameters:
excludes - a Iterable providing new exclude patterns
Returns:
this
See Also:
Pattern Format

exclude

CopySpec 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 PatternFilterable
Parameters:
excludeSpec - the spec to add
Returns:
this
See Also:
Pattern Format

exclude

CopySpec 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. 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 PatternFilterable
Parameters:
excludeSpec - the spec to add
Returns:
this
See Also:
Pattern Format

into

CopySpec into(Object destPath)
Specifies the destination directory for a copy. The destination is evaluated as for Project.file(Object).

Specified by:
into in interface CopyProcessingSpec
Parameters:
destPath - Path to the destination directory for a Copy
Returns:
this

into

CopySpec into(Object destPath,
              Closure configureClosure)
Creates and configures a child CopySpec with the given destination path. The destination is evaluated as for Project.file(Object).

Parameters:
destPath - Path to the destination directory for a Copy
configureClosure - The closure to use to configure the child CopySpec.
Returns:
this

rename

CopySpec rename(Closure closure)
Renames a source file to a different relative location under the target directory. 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
Parameters:
closure - rename closure
Returns:
this

rename

CopySpec 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
Parameters:
sourceRegEx - Source regular expression
replaceWith - Replacement string (use $ syntax for capture groups)
Returns:
this

rename

CopyProcessingSpec rename(Pattern sourceRegEx,
                          String replaceWith)
Renames files based on a regular expression. See CopyProcessingSpec.rename(String, String).

Specified by:
rename in interface CopyProcessingSpec
Parameters:
sourceRegEx - Source regular expression
replaceWith - Replacement string (use $ syntax for capture groups)
Returns:
this

filter

CopySpec 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
Parameters:
properties - map of filter properties
filterType - Class of filter to add
Returns:
this

filter

CopySpec 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
Parameters:
filterType - Class of filter to add
Returns:
this

filter

CopySpec 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.

Specified by:
filter in interface ContentFilterable
Parameters:
closure - to implement line based filtering
Returns:
this

expand

CopySpec 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(' ')}

Specified by:
expand in interface ContentFilterable
Parameters:
properties - to implement line based filtering
Returns:
this

eachFile

CopySpec eachFile(Action<? super FileCopyDetails> action)
Adds an action to be applied to each file as it 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
Parameters:
action - The action to execute.
Returns:
this

eachFile

CopySpec 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
Parameters:
closure - The action to execute.
Returns:
this