Interface CopySpec
-
- All Superinterfaces:
ContentFilterable
,CopyProcessingSpec
,CopySourceSpec
,PatternFilterable
- All Known Subinterfaces:
SyncSpec
- All Known Implementing Classes:
AbstractArchiveTask
,AbstractCopyTask
,Copy
,Ear
,Jar
,Jar
,ProcessResources
,Sync
,Tar
,War
,Zip
public interface CopySpec extends CopySourceSpec, CopyProcessingSpec, PatternFilterable
A set of specifications for copying files. This includes:- source directories (multiples allowed)
- destination directory
- ANT like include patterns
- ANT like exclude patterns
- File relocating rules
- renaming rules
- content filters
def myCopySpec = project.copySpec { into('webroot') exclude('**/.data/**') from('src/main/webapp') { include '**/*.jsp' } from('src/main/js') { include '**/*.js' } }
In this example, theinto
andexclude
specifications at the root level are inherited by the two child CopySpecs. Copy specs can be reused in other copy specs viawith(CopySpec...)
method. This enables reuse of the copy spec instances.def contentSpec = copySpec { from("content") { include "**/*.txt" } } task copy(type: Copy) { into "$buildDir/copy" with contentSpec }
- See Also:
Copy Task
,Project.copy()
-
-
Method Summary
All Methods Instance Methods Abstract Methods Modifier and Type Method Description CopySpec
eachFile(Closure closure)
Adds an action to be applied to each file as it about to be copied into its destination.CopySpec
eachFile(Action<? super FileCopyDetails> action)
Adds an action to be applied to each file as it is about to be copied into its destination.CopySpec
exclude(Closure excludeSpec)
Adds an exclude spec.CopySpec
exclude(java.lang.Iterable<java.lang.String> excludes)
Adds an ANT style exclude pattern.CopySpec
exclude(java.lang.String... excludes)
Adds an ANT style exclude pattern.CopySpec
exclude(Spec<FileTreeElement> excludeSpec)
Adds an exclude spec.CopySpec
expand(java.util.Map<java.lang.String,?> properties)
Expands property references in each file as it is copied.CopySpec
expand(java.util.Map<java.lang.String,?> properties, Action<? super ExpandDetails> action)
Expands property references in each file as it is copied.CopySpec
filesMatching(java.lang.Iterable<java.lang.String> patterns, Action<? super FileCopyDetails> action)
Configure theFileCopyDetails
for each file whose path matches any of the specified Ant-style patterns.CopySpec
filesMatching(java.lang.String pattern, Action<? super FileCopyDetails> action)
Configure theFileCopyDetails
for each file whose path matches the specified Ant-style pattern.CopySpec
filesNotMatching(java.lang.Iterable<java.lang.String> patterns, Action<? super FileCopyDetails> action)
Configure theFileCopyDetails
for each file whose path does not match any of the specified Ant-style patterns.CopySpec
filesNotMatching(java.lang.String pattern, Action<? super FileCopyDetails> action)
Configure theFileCopyDetails
for each file whose path does not match the specified Ant-style pattern.CopySpec
filter(Closure closure)
Adds a content filter based on the provided closure.CopySpec
filter(java.lang.Class<? extends java.io.FilterReader> filterType)
Adds a content filter to be used during the copy.CopySpec
filter(java.util.Map<java.lang.String,?> properties, java.lang.Class<? extends java.io.FilterReader> filterType)
Adds a content filter to be used during the copy.CopySpec
filter(Transformer<@Nullable java.lang.String,java.lang.String> transformer)
Adds a content filter based on the provided transformer.CopySpec
from(java.lang.Object... sourcePaths)
Specifies source files or directories for a copy.CopySpec
from(java.lang.Object sourcePath, Closure c)
Specifies the source files or directories for a copy and creates a childCopySourceSpec
.CopySpec
from(java.lang.Object sourcePath, Action<? super CopySpec> configureAction)
Specifies the source files or directories for a copy and creates a childCopySpec
.DuplicatesStrategy
getDuplicatesStrategy()
Returns the strategy to use when trying to copy more than one file to the same destination.java.lang.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.CopySpec
include(Closure includeSpec)
Adds an include spec.CopySpec
include(java.lang.Iterable<java.lang.String> includes)
Adds an ANT style include pattern.CopySpec
include(java.lang.String... includes)
Adds an ANT style include pattern.CopySpec
include(Spec<FileTreeElement> includeSpec)
Adds an include spec.CopySpec
into(java.lang.Object destPath)
Specifies the destination directory for a copy.CopySpec
into(java.lang.Object destPath, Closure configureClosure)
Creates and configures a childCopySpec
with the given destination path.CopySpec
into(java.lang.Object destPath, Action<? super CopySpec> copySpec)
Creates and configures a childCopySpec
with the given destination path.boolean
isCaseSensitive()
Specifies whether case-sensitive pattern matching should be used.CopySpec
rename(Closure closure)
Renames a source file.CopySpec
rename(java.lang.String sourceRegEx, java.lang.String replaceWith)
Renames files based on a regular expression.CopyProcessingSpec
rename(java.util.regex.Pattern sourceRegEx, java.lang.String replaceWith)
Renames files based on a regular expression.CopySpec
rename(Transformer<@Nullable java.lang.String,java.lang.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.CopySpec
setExcludes(java.lang.Iterable<java.lang.String> excludes)
Set the allowable exclude patterns.void
setFilteringCharset(java.lang.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.CopySpec
setIncludes(java.lang.Iterable<java.lang.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
dirPermissions, filePermissions, getDirMode, getDirPermissions, getFileMode, getFilePermissions, setDirMode, setFileMode
-
Methods inherited from interface org.gradle.api.tasks.util.PatternFilterable
getExcludes, getIncludes
-
-
-
-
Method Detail
-
isCaseSensitive
boolean isCaseSensitive()
Specifies whether case-sensitive pattern matching should be used.- 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.
-
getIncludeEmptyDirs
boolean getIncludeEmptyDirs()
Tells if empty target directories will be included in the copy.- Returns:
true
if empty target directories will be included in the copy,false
otherwise
-
setIncludeEmptyDirs
void setIncludeEmptyDirs(boolean includeEmptyDirs)
Controls if empty target directories should be included in the copy.- Parameters:
includeEmptyDirs
-true
if empty target directories should be included in the copy,false
otherwise
-
getDuplicatesStrategy
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'
forDuplicatesStrategy.EXCLUDE
).This strategy can be overridden for individual files by using
eachFile(org.gradle.api.Action)
orfilesMatching(String, org.gradle.api.Action)
.- Returns:
- the strategy to use for files included by this copy spec.
- See Also:
DuplicatesStrategy
-
setDuplicatesStrategy
void setDuplicatesStrategy(DuplicatesStrategy strategy)
The strategy to use when trying to copy more than one file to the same destination. Set toDuplicatesStrategy.INHERIT
, the default strategy, to use the strategy inherited from the parent copy spec, if any, orDuplicatesStrategy.INCLUDE
if this copy spec has no parent.
-
filesMatching
CopySpec filesMatching(java.lang.String pattern, Action<? super FileCopyDetails> action)
Configure theFileCopyDetails
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.- 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
CopySpec filesMatching(java.lang.Iterable<java.lang.String> patterns, Action<? super FileCopyDetails> action)
Configure theFileCopyDetails
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.- 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
CopySpec filesNotMatching(java.lang.String pattern, Action<? super FileCopyDetails> action)
Configure theFileCopyDetails
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.- 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
CopySpec filesNotMatching(java.lang.Iterable<java.lang.String> patterns, Action<? super FileCopyDetails> action)
Configure theFileCopyDetails
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.- 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
-
with
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 }
- Parameters:
sourceSpecs
- The specs to add- Returns:
- this
-
from
CopySpec from(java.lang.Object... sourcePaths)
Specifies source files or directories for a copy. The given paths are evaluated as perProject.files(Object...)
.- Specified by:
from
in interfaceCopySourceSpec
- Parameters:
sourcePaths
- Paths to source files for the copy
-
from
CopySpec from(java.lang.Object sourcePath, @DelegatesTo(CopySpec.class) Closure c)
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:
from
in interfaceCopySourceSpec
- Parameters:
sourcePath
- Path to source for the copyc
- closure for configuring the child CopySourceSpec
-
from
CopySpec from(java.lang.Object sourcePath, Action<? super CopySpec> configureAction)
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:
from
in interfaceCopySourceSpec
- Parameters:
sourcePath
- Path to source for the copyconfigureAction
- action for configuring the child CopySpec
-
setIncludes
CopySpec setIncludes(java.lang.Iterable<java.lang.String> includes)
Set the allowable include patterns. Note that unlikePatternFilterable.include(Iterable)
this replaces any previously defined includes.- Specified by:
setIncludes
in interfacePatternFilterable
- Parameters:
includes
- an Iterable providing new include patterns- Returns:
- this
- See Also:
Pattern Format
-
setExcludes
CopySpec setExcludes(java.lang.Iterable<java.lang.String> excludes)
Set the allowable exclude patterns. Note that unlikePatternFilterable.exclude(Iterable)
this replaces any previously defined excludes.- Specified by:
setExcludes
in interfacePatternFilterable
- Parameters:
excludes
- an Iterable providing new exclude patterns- Returns:
- this
- See Also:
Pattern Format
-
include
CopySpec include(java.lang.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 interfacePatternFilterable
- Parameters:
includes
- a vararg list of include patterns- Returns:
- this
- See Also:
Pattern Format
-
include
CopySpec include(java.lang.Iterable<java.lang.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 interfacePatternFilterable
- 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 interfacePatternFilterable
- 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 aFileTreeElement
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 interfacePatternFilterable
- Parameters:
includeSpec
- the spec to add- Returns:
- this
- See Also:
Pattern Format
-
exclude
CopySpec exclude(java.lang.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 interfacePatternFilterable
- Parameters:
excludes
- a vararg list of exclude patterns- Returns:
- this
- See Also:
Pattern Format
-
exclude
CopySpec exclude(java.lang.Iterable<java.lang.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 interfacePatternFilterable
- 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 interfacePatternFilterable
- 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 aFileTreeElement
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 interfacePatternFilterable
- Parameters:
excludeSpec
- the spec to add- Returns:
- this
- See Also:
Pattern Format
-
into
CopySpec into(java.lang.Object destPath)
Specifies the destination directory for a copy. The destination is evaluated as perProject.file(Object)
.- Specified by:
into
in interfaceCopyProcessingSpec
- Parameters:
destPath
- Path to the destination directory for a Copy- Returns:
- this
-
into
CopySpec into(java.lang.Object destPath, @DelegatesTo(CopySpec.class) Closure configureClosure)
Creates and configures a childCopySpec
with the given destination path. The destination is evaluated as perProject.file(Object)
.- Parameters:
destPath
- Path to the destination directory for a CopyconfigureClosure
- The closure to use to configure the childCopySpec
.- Returns:
- this
-
into
CopySpec into(java.lang.Object destPath, Action<? super CopySpec> copySpec)
Creates and configures a childCopySpec
with the given destination path. The destination is evaluated as perProject.file(Object)
.- Parameters:
destPath
- Path to the destination directory for a CopycopySpec
- The action to use to configure the childCopySpec
.- Returns:
- this
-
rename
CopySpec 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 interfaceCopyProcessingSpec
- Parameters:
closure
- rename closure- Returns:
- this
-
rename
CopySpec rename(Transformer<@Nullable java.lang.String,java.lang.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 interfaceCopyProcessingSpec
- Parameters:
renamer
- rename function- Returns:
- this
-
rename
CopySpec rename(java.lang.String sourceRegEx, java.lang.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 interfaceCopyProcessingSpec
- Parameters:
sourceRegEx
- Source regular expressionreplaceWith
- Replacement string (use $ syntax for capture groups)- Returns:
- this
-
rename
CopyProcessingSpec rename(java.util.regex.Pattern sourceRegEx, java.lang.String replaceWith)
Renames files based on a regular expression. SeeCopyProcessingSpec.rename(String, String)
.- Specified by:
rename
in interfaceCopyProcessingSpec
- Parameters:
sourceRegEx
- Source regular expressionreplaceWith
- Replacement string (use $ syntax for capture groups)- Returns:
- this
-
filter
CopySpec filter(java.util.Map<java.lang.String,?> properties, java.lang.Class<? extends java.io.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
. 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:
filter
in interfaceContentFilterable
- Parameters:
properties
- map of filter propertiesfilterType
- Class of filter to add- Returns:
- this
-
filter
CopySpec filter(java.lang.Class<? extends java.io.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
. Includeorg.apache.tools.ant.filters.*
for access to all the standard Ant filters.Examples:
filter(StripJavaComments) filter(com.mycompany.project.CustomFilter)
- Specified by:
filter
in interfaceContentFilterable
- 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 ornull
to remove the line. If every line is removed, the result will be an empty file, not an absent one.- Specified by:
filter
in interfaceContentFilterable
- Parameters:
closure
- to implement line based filtering- Returns:
- this
-
filter
CopySpec filter(Transformer<@Nullable java.lang.String,java.lang.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 ornull
to remove the line. If every line is removed, the result will be an empty file, not an absent one.- Specified by:
filter
in interfaceContentFilterable
- Parameters:
transformer
- to implement line based filtering- Returns:
- this
-
expand
CopySpec expand(java.util.Map<java.lang.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 thenContentFilterable.expand(Map, Action)
should be used to disable this behavior.- Specified by:
expand
in interfaceContentFilterable
- Parameters:
properties
- reference-to-value map for substitution- Returns:
- this
-
expand
CopySpec expand(java.util.Map<java.lang.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 byExpandDetails.getEscapeBackslash()
property. It should be set totrue
to disable escape sequences conversion:expand(one: '1', two: 2) { escapeBackslash = true }
- Specified by:
expand
in interfaceContentFilterable
- Parameters:
properties
- reference-to-value map for substitutionaction
- action to perform additional configuration of the underlying template engine- Returns:
- this
-
eachFile
CopySpec 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 interfaceCopyProcessingSpec
- Parameters:
action
- The action to execute.- Returns:
- this
-
eachFile
CopySpec eachFile(@DelegatesTo(FileCopyDetails.class) 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 aFileCopyDetails
as its parameter. Actions are executed in the order added, and are inherited from the parent spec.- Specified by:
eachFile
in interfaceCopyProcessingSpec
- Parameters:
closure
- The action to execute.- Returns:
- this
-
getFilteringCharset
java.lang.String getFilteringCharset()
Gets the charset used to read and write files when filtering. By default, the JVM default charset is used.- Returns:
- the charset used to read and write files when filtering
- Since:
- 2.14
-
setFilteringCharset
void setFilteringCharset(java.lang.String charset)
Specifies the charset used to read and write files when filtering.- Parameters:
charset
- the name of the charset to use when filtering files- Since:
- 2.14
-
-