org.gradle.api.tasks
Class AbstractCopyTask

java.lang.Object
  extended by org.gradle.api.internal.AbstractTask
      extended by org.gradle.api.DefaultTask
          extended by org.gradle.api.internal.ConventionTask
              extended by 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, Task, PatternFilterable, org.gradle.util.Configurable<Task>
Direct Known Subclasses:
AbstractArchiveTask, Copy, Sync

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.


Field Summary
 
Fields inherited from interface org.gradle.api.Task
TASK_ACTION, TASK_DEPENDS_ON, TASK_DESCRIPTION, TASK_NAME, TASK_OVERWRITE, TASK_TYPE
 
Constructor Summary
AbstractCopyTask()
           
 
Method Summary
protected  void configureRootSpec()
           
protected  void copy()
           
 AbstractCopyTask eachFile(Action<? super FileCopyDetails> action)
          Adds an action to be applied to each file as it about to be copied into its destination.
 AbstractCopyTask eachFile(Closure closure)
          Adds an action to be applied to each file as it 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(Spec<FileTreeElement> excludeSpec)
          Adds an exclude spec.
 AbstractCopyTask exclude(String... excludes)
          Adds an ANT style exclude pattern.
 AbstractCopyTask expand(Map<String,?> properties)
          Expands property references in each file as it is copied.
 AbstractCopyTask filter(Class<? extends FilterReader> filterType)
          Adds a content filter to be used during the copy.
 AbstractCopyTask filter(Closure closure)
          Adds a content filter based on the provided closure.
 AbstractCopyTask filter(Map<String,?> properties, Class<? extends FilterReader> filterType)
          Adds a content filter to be used during the copy.
 AbstractCopyTask from(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.
protected abstract  org.gradle.api.internal.file.copy.CopyActionImpl getCopyAction()
           
 FileCollection getDefaultSource()
           
 int getDirMode()
          Returns the Unix permissions to use for the target directories.
 Set<String> getExcludes()
          Get the set of exclude patterns.
 int getFileMode()
          Returns the Unix permissions to use for the target files.
 Set<String> getIncludes()
          Get the set of include patterns.
protected  CopySpec getMainSpec()
           
 org.gradle.api.internal.file.copy.ReadableCopySpec getRootSpec()
           
 FileCollection getSource()
           
 AbstractCopyTask include(Closure includeSpec)
          Adds an include spec.
 AbstractCopyTask include(Iterable<String> includes)
          Adds an ANT style include pattern.
 AbstractCopyTask include(Spec<FileTreeElement> includeSpec)
          Adds an include spec.
 AbstractCopyTask include(String... includes)
          Adds an ANT style include pattern.
 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.
 boolean isCaseSensitive()
          Returns true if this CopySpec uses case-sensitive pattern matching.
 AbstractCopyTask rename(Closure closure)
          Renames a source file to a different relative location under the target directory.
 AbstractCopyTask rename(Pattern sourceRegEx, String replaceWith)
          Renames files based on a regular expression.
 AbstractCopyTask 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.
 AbstractCopyTask setDirMode(int mode)
          Sets the Unix permissions to use for the target directories.
 AbstractCopyTask setExcludes(Iterable<String> excludes)
          Set the allowable exclude patterns.
 AbstractCopyTask setFileMode(int mode)
          Sets the Unix permissions to use for the target files.
 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, getConventionMapping, setConventionMapping
 
Methods inherited from class org.gradle.api.internal.AbstractTask
captureStandardOutput, compareTo, configure, deleteAllActions, dependsOn, dependsOnTaskDidWork, disableStandardOutputCapture, doFirst, doFirst, doLast, doLast, equals, execute, getActions, getAdditionalProperties, getAnt, getAsDynamicObject, getConvention, getDependsOn, getDescription, getDidWork, getDynamicObjectHelper, getEnabled, getExecuter, getGroup, getInputs, getLogger, getLogging, getName, getOnlyIf, getOutputs, getPath, getProject, getServices, getStandardOutputCapture, getState, getTaskDependencies, getTemporaryDir, hashCode, hasProperty, injectIntoNewInstance, isEnabled, leftShift, onlyIf, onlyIf, property, setActions, setConvention, setDependsOn, setDescription, setDidWork, setEnabled, setExecuter, setGroup, setName, setOnlyIf, setOnlyIf, setProject, setProperty, toString
 
Methods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
 

Constructor Detail

AbstractCopyTask

public AbstractCopyTask()
Method Detail

copy

protected void copy()

configureRootSpec

protected void configureRootSpec()

getDefaultSource

public FileCollection getDefaultSource()

getSource

public FileCollection getSource()

getCopyAction

protected abstract org.gradle.api.internal.file.copy.CopyActionImpl getCopyAction()

getRootSpec

public org.gradle.api.internal.file.copy.ReadableCopySpec getRootSpec()
Specified by:
getRootSpec in interface org.gradle.api.internal.file.copy.CopySpecSource

getMainSpec

protected CopySpec getMainSpec()

isCaseSensitive

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

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.

from

public AbstractCopyTask 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
Specified by:
from in interface CopySpec
Parameters:
sourcePaths - Paths to source files for the copy

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 for 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

with

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

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 for 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 for 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

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

public Set<String> getIncludes()
Get the set of include patterns.

Specified by:
getIncludes in interface PatternFilterable

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

public Set<String> getExcludes()
Get the set of exclude patterns.

Specified by:
getExcludes in interface PatternFilterable

rename

public AbstractCopyTask 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
Specified by:
rename in interface CopySpec
Parameters:
closure - rename closure
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.

Specified by:
filter in interface ContentFilterable
Specified by:
filter in interface CopySpec
Parameters:
closure - 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(' ')}

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

getDirMode

public int getDirMode()
Returns the Unix permissions to use for the target directories. It is dependent on the copy action implementation whether these permissions will actually be applied.

Specified by:
getDirMode in interface CopyProcessingSpec
Returns:
The directory permissions.

getFileMode

public int getFileMode()
Returns the Unix permissions to use for the target files. It is dependent on the copy action implementation whether these permissions will actually be applied.

Specified by:
getFileMode in interface CopyProcessingSpec
Returns:
The file permissions.

setDirMode

public AbstractCopyTask setDirMode(int mode)
Sets the Unix permissions to use for the target directories. It is dependent on the copy action implementation whether these permissions will actually be applied.

Specified by:
setDirMode in interface CopyProcessingSpec
Parameters:
mode - The directory permissions.
Returns:
this

setFileMode

public AbstractCopyTask setFileMode(int mode)
Sets the Unix permissions to use for the target files. It is dependent on the copy action implementation whether these permissions will actually be applied.

Specified by:
setFileMode in interface CopyProcessingSpec
Parameters:
mode - The file permissions.
Returns:
this

eachFile

public AbstractCopyTask 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
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