Class 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, ExtensionAware, Task, PatternFilterable, org.gradle.util.Configurable<Task>
- Direct Known Subclasses:
AbstractArchiveTask, Copy, Sync
AbstractCopyTask is the base class for all copy tasks.-
Nested Class Summary
Nested classes/interfaces inherited from interface Task
Task.Namer -
Field Summary
Fields inherited from interface Task
TASK_ACTION, TASK_DEPENDS_ON, TASK_DESCRIPTION, TASK_GROUP, TASK_NAME, TASK_OVERWRITE, TASK_TYPE -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionprotected voidcopy()protected abstract org.gradle.api.internal.file.copy.CopyActionprotected org.gradle.api.internal.file.copy.CopyActionExecuterprotected org.gradle.api.internal.file.copy.CopySpecInternalAdds an action to be applied to each file as it about to be copied into its destination.eachFile(Action<? super FileCopyDetails> action) Adds an action to be applied to each file as it is about to be copied into its destination.Adds an exclude spec.Adds an ANT style exclude pattern.Adds an ANT style exclude pattern.exclude(Spec<FileTreeElement> excludeSpec) Adds an exclude spec.Expands property references in each file as it is copied.filesMatching(Iterable<String> patterns, Action<? super FileCopyDetails> action) Configure theFileCopyDetailsfor each file whose path matches any of the specified Ant-style patterns.filesMatching(String pattern, Action<? super FileCopyDetails> action) Configure theFileCopyDetailsfor each file whose path matches the specified Ant-style pattern.filesNotMatching(Iterable<String> patterns, Action<? super FileCopyDetails> action) Configure theFileCopyDetailsfor each file whose path does not match any of the specified Ant-style patterns.filesNotMatching(String pattern, Action<? super FileCopyDetails> action) Configure theFileCopyDetailsfor each file whose path does not match the specified Ant-style pattern.Adds a content filter based on the provided closure.filter(Class<? extends FilterReader> filterType) Adds a content filter to be used during the copy.filter(Map<String, ?> properties, Class<? extends FilterReader> filterType) Adds a content filter to be used during the copy.filter(Transformer<String, String> transformer) Adds a content filter based on the provided transformer.Specifies source files or directories for a copy.Specifies the source files or directories for a copy and creates a childCopySourceSpec.Specifies the source files or directories for a copy and creates a childCopySpec.protected org.gradle.api.internal.file.collections.DirectoryFileTreeFactoryReturns the Unix permissions to use for the target directories.Returns the strategy to use when trying to copy more than one file to the same destination.Returns the set of exclude patterns.protected org.gradle.api.internal.file.FileLookupReturns the Unix permissions to use for the target files.protected org.gradle.api.internal.file.FileResolverprotected org.gradle.internal.nativeplatform.filesystem.FileSystemGets the charset used to read and write files when filtering.booleanTells if empty target directories will be included in the copy.Returns the set of include patterns.protected org.gradle.internal.reflect.Instantiatorprotected org.gradle.api.internal.file.copy.CopySpecInternalorg.gradle.api.internal.file.copy.CopySpecInternalReturns the source files for this task.Adds an include spec.Adds an ANT style include pattern.Adds an ANT style include pattern.include(Spec<FileTreeElement> includeSpec) Adds an include spec.Specifies the destination directory for a copy.Creates and configures a childCopySpecwith the given destination path.Creates and configures a childCopySpecwith the given destination path.booleanSpecifies whether case-sensitive pattern matching should be used.Renames a source file.Renames files based on a regular expression.Renames files based on a regular expression.rename(Transformer<String, String> renamer) Renames a source file.voidsetCaseSensitive(boolean caseSensitive) Specifies whether case-sensitive pattern matching should be used for this CopySpec.setDirMode(Integer mode) Sets the Unix permissions to use for the target directories.voidsetDuplicatesStrategy(DuplicatesStrategy strategy) The strategy to use when trying to copy more than one file to the same destination.setExcludes(Iterable<String> excludes) Set the allowable exclude patterns.setFileMode(Integer mode) Sets the Unix permissions to use for the target files.voidsetFilteringCharset(String charset) Specifies the charset used to read and write files when filtering.voidsetIncludeEmptyDirs(boolean includeEmptyDirs) Controls if empty target directories should be included in the copy.setIncludes(Iterable<String> includes) Set the allowable include patterns.Adds the given specs as a child of this spec.Methods inherited from class org.gradle.api.internal.ConventionTask
conventionMapping, conventionMapping, getConventionMappingMethods inherited from class DefaultTask
newInputDirectory, newInputFile, newOutputDirectory, newOutputFileMethods inherited from class org.gradle.api.internal.AbstractTask
addValidator, appendParallelSafeAction, compareTo, configure, deleteAllActions, dependsOn, dependsOnTaskDidWork, doFirst, doFirst, doFirst, doLast, doLast, doLast, execute, finalizedBy, getActions, getAnt, getAsDynamicObject, getConvention, getDependsOn, getDescription, getDestroyables, getDidWork, getEnabled, getExecuter, getExtensions, getFinalizedBy, getGroup, getIdentityPath, getImpliesSubProjects, getInputs, getLocalState, getLogger, getLogging, getMustRunAfter, getName, getOnlyIf, getOutputs, getPath, getProject, getServices, getShouldRunAfter, getStandardOutputCapture, getState, getTaskActions, getTaskDependencies, getTemporaryDir, getTemporaryDirFactory, getValidators, hasProperty, injectIntoNewInstance, isEnabled, isHasCustomActions, leftShift, mustRunAfter, onlyIf, onlyIf, prependParallelSafeAction, property, setActions, setDependsOn, setDescription, setDidWork, setEnabled, setExecuter, setFinalizedBy, setGroup, setImpliesSubProjects, setMustRunAfter, setOnlyIf, setOnlyIf, setProperty, setShouldRunAfter, shouldRunAfter, toString
-
Constructor Details
-
AbstractCopyTask
protected AbstractCopyTask()
-
-
Method Details
-
createRootSpec
protected org.gradle.api.internal.file.copy.CopySpecInternal createRootSpec() -
createCopyAction
protected abstract org.gradle.api.internal.file.copy.CopyAction createCopyAction() -
getInstantiator
@Inject protected org.gradle.internal.reflect.Instantiator getInstantiator() -
getFileSystem
@Inject protected org.gradle.internal.nativeplatform.filesystem.FileSystem getFileSystem() -
getFileResolver
@Inject protected org.gradle.api.internal.file.FileResolver getFileResolver() -
getFileLookup
@Inject protected org.gradle.api.internal.file.FileLookup getFileLookup() -
getDirectoryFileTreeFactory
@Inject protected org.gradle.api.internal.file.collections.DirectoryFileTreeFactory getDirectoryFileTreeFactory() -
copy
protected void copy() -
createCopyActionExecuter
protected org.gradle.api.internal.file.copy.CopyActionExecuter createCopyActionExecuter() -
getSource
Returns the source files for this task.- Returns:
- The source files. Never returns null.
-
getRootSpec
- Specified by:
getRootSpecin interfaceorg.gradle.api.internal.file.copy.CopySpecSource
-
getMainSpec
-
isCaseSensitive
Specifies whether case-sensitive pattern matching should be used.- Specified by:
isCaseSensitivein interfaceCopySpec- 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:
setCaseSensitivein interfaceCopySpec- Parameters:
caseSensitive- true for case-sensitive matching.
-
getIncludeEmptyDirs
Tells if empty target directories will be included in the copy.- Specified by:
getIncludeEmptyDirsin interfaceCopySpec- 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:
setIncludeEmptyDirsin interfaceCopySpec- Parameters:
includeEmptyDirs- true if empty target directories should be included in the copy, false otherwise
-
setDuplicatesStrategy
The strategy to use when trying to copy more than one file to the same destination. Set tonullto use the default strategy, which is inherited from the parent copy spec, if any, orDuplicatesStrategy.INCLUDEif this copy spec has no parent.- Specified by:
setDuplicatesStrategyin interfaceCopySpec
-
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'forDuplicatesStrategy.EXCLUDE).This strategy can be overridden for individual files by using
CopySpec.eachFile(org.gradle.api.Action)orCopySpec.filesMatching(String, org.gradle.api.Action).- Specified by:
getDuplicatesStrategyin interfaceCopySpec- Returns:
- the strategy to use for files included by this copy spec.
- See Also:
-
from
Specifies source files or directories for a copy. The given paths are evaluated as perProject.files(Object...).- Specified by:
fromin interfaceCopySourceSpec- Specified by:
fromin interfaceCopySpec- Parameters:
sourcePaths- Paths to source files for the copy
-
filesMatching
Configure theFileCopyDetailsfor 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:
filesMatchingin interfaceCopySpec- Parameters:
pattern- Ant-style pattern used to match against files' relative pathsaction- action called for the FileCopyDetails of each file matching pattern- Returns:
- this
-
filesMatching
public AbstractCopyTask filesMatching(Iterable<String> patterns, Action<? super FileCopyDetails> action) Configure theFileCopyDetailsfor 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:
filesMatchingin interfaceCopySpec- Parameters:
patterns- Ant-style patterns used to match against files' relative pathsaction- action called for the FileCopyDetails of each file matching pattern- Returns:
- this
-
filesNotMatching
Configure theFileCopyDetailsfor 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:
filesNotMatchingin interfaceCopySpec- Parameters:
pattern- Ant-style pattern used to match against files' relative pathsaction- 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 theFileCopyDetailsfor 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:
filesNotMatchingin interfaceCopySpec- Parameters:
patterns- Ant-style patterns used to match against files' relative pathsaction- action called for the FileCopyDetails of each file that does not match any pattern- Returns:
- this
-
from
Specifies the source files or directories for a copy and creates a childCopySourceSpec. The given source path is evaluated as perProject.files(Object...).- Specified by:
fromin interfaceCopySourceSpec- Specified by:
fromin interfaceCopySpec- Parameters:
sourcePath- Path to source for the copyc- closure for configuring the child CopySourceSpec
-
from
Specifies the source files or directories for a copy and creates a childCopySpec. The given source path is evaluated as perProject.files(Object...).- Specified by:
fromin interfaceCopySourceSpec- Specified by:
fromin interfaceCopySpec- Parameters:
sourcePath- Path to source for the copyconfigureAction- action for configuring the child CopySpec
-
with
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 } -
into
Specifies the destination directory for a copy. The destination is evaluated as perProject.file(Object).- Specified by:
intoin interfaceCopyProcessingSpec- Specified by:
intoin interfaceCopySpec- Parameters:
destDir- Path to the destination directory for a Copy- Returns:
- this
-
into
Creates and configures a childCopySpecwith the given destination path. The destination is evaluated as perProject.file(Object). -
into
Creates and configures a childCopySpecwith the given destination path. The destination is evaluated as perProject.file(Object). -
include
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:
includein interfaceCopySpec- Specified by:
includein interfacePatternFilterable- Parameters:
includes- a vararg list of include patterns- Returns:
- this
- See Also:
-
include
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:
includein interfaceCopySpec- Specified by:
includein interfacePatternFilterable- Parameters:
includes- a Iterable providing more include patterns- Returns:
- this
- See Also:
-
include
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:
includein interfaceCopySpec- Specified by:
includein interfacePatternFilterable- Parameters:
includeSpec- the spec to add- Returns:
- this
- See Also:
-
include
Adds an include spec. This method may be called multiple times to append new specs. The given closure is passed aFileTreeElementas 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:
includein interfaceCopySpec- Specified by:
includein interfacePatternFilterable- Parameters:
includeSpec- the spec to add- Returns:
- this
- See Also:
-
exclude
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:
excludein interfaceCopySpec- Specified by:
excludein interfacePatternFilterable- Parameters:
excludes- a vararg list of exclude patterns- Returns:
- this
- See Also:
-
exclude
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:
excludein interfaceCopySpec- Specified by:
excludein interfacePatternFilterable- Parameters:
excludes- a Iterable providing new exclude patterns- Returns:
- this
- See Also:
-
exclude
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:
excludein interfaceCopySpec- Specified by:
excludein interfacePatternFilterable- Parameters:
excludeSpec- the spec to add- Returns:
- this
- See Also:
-
exclude
Adds an exclude spec. This method may be called multiple times to append new specs.The given closure is passed aFileTreeElementas 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:
excludein interfaceCopySpec- Specified by:
excludein interfacePatternFilterable- Parameters:
excludeSpec- the spec to add- Returns:
- this
- See Also:
-
setIncludes
Set the allowable include patterns. Note that unlikePatternFilterable.include(Iterable)this replaces any previously defined includes.- Specified by:
setIncludesin interfaceCopySpec- Specified by:
setIncludesin interfacePatternFilterable- Parameters:
includes- an Iterable providing new include patterns- Returns:
- this
- See Also:
-
getIncludes
Returns the set of include patterns.- Specified by:
getIncludesin interfacePatternFilterable- Returns:
- The include patterns. Returns an empty set when there are no include patterns.
-
setExcludes
Set the allowable exclude patterns. Note that unlikePatternFilterable.exclude(Iterable)this replaces any previously defined excludes.- Specified by:
setExcludesin interfaceCopySpec- Specified by:
setExcludesin interfacePatternFilterable- Parameters:
excludes- an Iterable providing new exclude patterns- Returns:
- this
- See Also:
-
getExcludes
Returns the set of exclude patterns.- Specified by:
getExcludesin interfacePatternFilterable- Returns:
- The exclude patterns. Returns an empty set when there are no exclude patterns.
-
rename
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:
renamein interfaceCopyProcessingSpec- Specified by:
renamein interfaceCopySpec- Parameters:
closure- rename closure- Returns:
- this
-
rename
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:
renamein interfaceCopyProcessingSpec- Specified by:
renamein interfaceCopySpec- Parameters:
renamer- rename function- Returns:
- this
-
rename
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:
renamein interfaceCopyProcessingSpec- Specified by:
renamein interfaceCopySpec- Parameters:
sourceRegEx- Source regular expressionreplaceWith- Replacement string (use $ syntax for capture groups)- Returns:
- this
-
rename
Renames files based on a regular expression. SeeCopyProcessingSpec.rename(String, String).- Specified by:
renamein interfaceCopyProcessingSpec- Specified by:
renamein interfaceCopySpec- Parameters:
sourceRegEx- Source regular expressionreplaceWith- Replacement string (use $ syntax for capture groups)- Returns:
- this
-
filter
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. Includeorg.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:
filterin interfaceContentFilterable- Specified by:
filterin interfaceCopySpec- Parameters:
properties- map of filter propertiesfilterType- Class of filter to add- Returns:
- this
-
filter
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. Includeorg.apache.tools.ant.filters.*for access to all the standard Ant filters.Examples:
filter(StripJavaComments) filter(com.mycompany.project.CustomFilter)
- Specified by:
filterin interfaceContentFilterable- Specified by:
filterin interfaceCopySpec- Parameters:
filterType- Class of filter to add- Returns:
- this
-
filter
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 ornullto remove the line. If every line is removed, the result will be an empty file, not an absent one.- Specified by:
filterin interfaceContentFilterable- Specified by:
filterin interfaceCopySpec- Parameters:
closure- to implement line based filtering- Returns:
- this
-
filter
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 ornullto remove the line. If every line is removed, the result will be an empty file, not an absent one.- Specified by:
filterin interfaceContentFilterable- Specified by:
filterin interfaceCopySpec- Parameters:
transformer- to implement line based filtering- Returns:
- this
-
expand
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$propertyor${property}in the file. You can also include arbitrary Groovy code in the file, such as${version ?: 'unknown'}or${classpath*.name.join(' ')}- Specified by:
expandin interfaceContentFilterable- Specified by:
expandin interfaceCopySpec- Parameters:
properties- to implement line based filtering- Returns:
- this
-
getDirMode
Returns the Unix permissions to use for the target directories.nullmeans that existing permissions are preserved. It is dependent on the copy action implementation whether these permissions will actually be applied.- Specified by:
getDirModein interfaceCopyProcessingSpec- Returns:
- The directory permissions, or
nullif existing permissions should be preserved.
-
getFileMode
Returns the Unix permissions to use for the target files.nullmeans that existing permissions are preserved. It is dependent on the copy action implementation whether these permissions will actually be applied.- Specified by:
getFileModein interfaceCopyProcessingSpec- Returns:
- The file permissions, or
nullif existing permissions should be preserved.
-
setDirMode
Sets the Unix permissions to use for the target directories.nullmeans that existing permissions are preserved. It is dependent on the copy action implementation whether these permissions will actually be applied.- Specified by:
setDirModein interfaceCopyProcessingSpec- Parameters:
mode- The directory permissions.- Returns:
- this
-
setFileMode
Sets the Unix permissions to use for the target files.nullmeans that existing permissions are preserved. It is dependent on the copy action implementation whether these permissions will actually be applied.- Specified by:
setFileModein interfaceCopyProcessingSpec- Parameters:
mode- The file permissions.- Returns:
- this
-
eachFile
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:
eachFilein interfaceCopyProcessingSpec- Specified by:
eachFilein interfaceCopySpec- Parameters:
action- The action to execute.- Returns:
- this
-
eachFile
Adds an action to be applied to each file as it about to be copied into its destination. The given closure is called with aFileCopyDetailsas its parameter. Actions are executed in the order added, and are inherited from the parent spec.- Specified by:
eachFilein interfaceCopyProcessingSpec- Specified by:
eachFilein interfaceCopySpec- Parameters:
closure- The action to execute.- Returns:
- this
-
getFilteringCharset
Gets the charset used to read and write files when filtering. By default, the JVM default charset is used.- Specified by:
getFilteringCharsetin interfaceCopySpec- Returns:
- the charset used to read and write files when filtering
-
setFilteringCharset
Specifies the charset used to read and write files when filtering.- Specified by:
setFilteringCharsetin interfaceCopySpec- Parameters:
charset- the name of the charset to use when filtering files
-