ContentFilterable
, CopyProcessingSpec
, CopySourceSpec
, PatternFilterable
SyncSpec
AbstractArchiveTask
, AbstractCopyTask
, Copy
, Ear
, Jar
, Jar
, ProcessResources
, Sync
, Tar
, War
, Zip
public interface CopySpec extends CopySourceSpec, CopyProcessingSpec, PatternFilterable
def myCopySpec = project.copySpec { into('webroot') exclude('**/.data/**') 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.
Copy specs can be reused in other copy specs via with(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 }
Copy Task
,
Project.copy()
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(Iterable<String> excludes) |
Adds an ANT style exclude pattern.
|
CopySpec |
exclude(String... excludes) |
Adds an ANT style exclude pattern.
|
CopySpec |
exclude(Spec<FileTreeElement> excludeSpec) |
Adds an exclude spec.
|
CopySpec |
expand(Map<String,?> properties) |
Expands property references in each file as it is copied.
|
CopySpec |
expand(Map<String,?> properties,
Action<? super ExpandDetails> action) |
Expands property references in each file as it is copied.
|
CopySpec |
filesMatching(Iterable<String> patterns,
Action<? super FileCopyDetails> action) |
Configure the
FileCopyDetails for each file whose path matches any of the specified Ant-style patterns. |
CopySpec |
filesMatching(String pattern,
Action<? super FileCopyDetails> action) |
Configure the
FileCopyDetails for each file whose path matches the specified Ant-style pattern. |
CopySpec |
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. |
CopySpec |
filesNotMatching(String pattern,
Action<? super FileCopyDetails> action) |
Configure the
FileCopyDetails 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(Class<? extends FilterReader> filterType) |
Adds a content filter to be used during the copy.
|
CopySpec |
filter(Map<String,?> properties,
Class<? extends FilterReader> filterType) |
Adds a content filter to be used during the copy.
|
CopySpec |
filter(Transformer<String,String> transformer) |
Adds a content filter based on the provided transformer.
|
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 |
from(Object sourcePath,
Action<? super CopySpec> configureAction) |
Specifies the source files or directories for a copy and creates a child
CopySpec . |
DuplicatesStrategy |
getDuplicatesStrategy() |
Returns the strategy to use when trying to copy more than one file to the same destination.
|
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(Iterable<String> includes) |
Adds an ANT style include pattern.
|
CopySpec |
include(String... includes) |
Adds an ANT style include pattern.
|
CopySpec |
include(Spec<FileTreeElement> includeSpec) |
Adds an include spec.
|
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. |
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.
|
CopySpec |
rename(Closure closure) |
Renames a source file.
|
CopySpec |
rename(String sourceRegEx,
String replaceWith) |
Renames files based on a regular expression.
|
CopyProcessingSpec |
rename(Pattern sourceRegEx,
String replaceWith) |
Renames files based on a regular expression.
|
CopySpec |
rename(Transformer<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.
|
CopySpec |
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.
|
CopySpec |
setIncludes(Iterable<String> includes) |
Set the allowable include patterns.
|
CopySpec |
with(CopySpec... sourceSpecs) |
Adds the given specs as a child of this spec.
|
getDirMode, getFileMode, setDirMode, setFileMode
getExcludes, getIncludes
boolean isCaseSensitive()
void setCaseSensitive(boolean caseSensitive)
caseSensitive
- true for case-sensitive matching.boolean getIncludeEmptyDirs()
true
if empty target directories will be included in the copy, false
otherwisevoid setIncludeEmptyDirs(boolean includeEmptyDirs)
includeEmptyDirs
- true
if empty target directories should be included in the copy, false
otherwiseDuplicatesStrategy getDuplicatesStrategy()
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 eachFile(org.gradle.api.Action)
or filesMatching(String, org.gradle.api.Action)
.
DuplicatesStrategy
void setDuplicatesStrategy(DuplicatesStrategy strategy)
DuplicatesStrategy.INHERIT
, the default strategy, to use
the strategy inherited from the parent copy spec, if any, or DuplicatesStrategy.INCLUDE
if this copy spec has no parent.CopySpec filesMatching(String pattern, Action<? super FileCopyDetails> action)
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.pattern
- Ant-style pattern used to match against files' relative pathsaction
- action called for the FileCopyDetails of each file matching patternCopySpec filesMatching(Iterable<String> patterns, Action<? super FileCopyDetails> action)
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.patterns
- Ant-style patterns used to match against files' relative pathsaction
- action called for the FileCopyDetails of each file matching patternCopySpec filesNotMatching(String pattern, Action<? super FileCopyDetails> action)
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.pattern
- Ant-style pattern used to match against files' relative pathsaction
- action called for the FileCopyDetails of each file that does not match patternCopySpec filesNotMatching(Iterable<String> patterns, Action<? super FileCopyDetails> action)
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.patterns
- Ant-style patterns used to match against files' relative pathsaction
- action called for the FileCopyDetails of each file that does not match any patternCopySpec with(CopySpec... sourceSpecs)
def contentSpec = copySpec { from("content") { include "**/*.txt" } } task copy(type: Copy) { into "$buildDir/copy" with contentSpec }
sourceSpecs
- The specs to addCopySpec from(Object... sourcePaths)
Project.files(Object...)
.from
in interface CopySourceSpec
sourcePaths
- Paths to source files for the copyCopySpec from(Object sourcePath, Closure c)
CopySourceSpec
. The given source
path is evaluated as per Project.files(Object...)
.from
in interface CopySourceSpec
sourcePath
- Path to source for the copyc
- closure for configuring the child CopySourceSpecCopySpec from(Object sourcePath, Action<? super CopySpec> configureAction)
CopySpec
. The given source
path is evaluated as per Project.files(Object...)
.from
in interface CopySourceSpec
sourcePath
- Path to source for the copyconfigureAction
- action for configuring the child CopySpecCopySpec setIncludes(Iterable<String> includes)
PatternFilterable.include(Iterable)
this replaces any previously
defined includes.setIncludes
in interface PatternFilterable
includes
- an Iterable providing new include patternsPattern Format
CopySpec setExcludes(Iterable<String> excludes)
PatternFilterable.exclude(Iterable)
this replaces any previously
defined excludes.setExcludes
in interface PatternFilterable
excludes
- an Iterable providing new exclude patternsPattern Format
CopySpec include(String... includes)
include
in interface PatternFilterable
includes
- a vararg list of include patternsPattern Format
CopySpec include(Iterable<String> includes)
include
in interface PatternFilterable
includes
- a Iterable providing more include patternsPattern Format
CopySpec include(Spec<FileTreeElement> includeSpec)
include
in interface PatternFilterable
includeSpec
- the spec to addPattern Format
CopySpec include(Closure includeSpec)
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.include
in interface PatternFilterable
includeSpec
- the spec to addPattern Format
CopySpec exclude(String... excludes)
exclude
in interface PatternFilterable
excludes
- a vararg list of exclude patternsPattern Format
CopySpec exclude(Iterable<String> excludes)
exclude
in interface PatternFilterable
excludes
- a Iterable providing new exclude patternsPattern Format
CopySpec exclude(Spec<FileTreeElement> excludeSpec)
exclude
in interface PatternFilterable
excludeSpec
- the spec to addPattern Format
CopySpec exclude(Closure excludeSpec)
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.
exclude
in interface PatternFilterable
excludeSpec
- the spec to addPattern Format
CopySpec into(Object destPath)
Project.file(Object)
.into
in interface CopyProcessingSpec
destPath
- Path to the destination directory for a CopyCopySpec into(Object destPath, Closure configureClosure)
CopySpec
with the given destination path.
The destination is evaluated as per Project.file(Object)
.destPath
- Path to the destination directory for a CopyconfigureClosure
- The closure to use to configure the child CopySpec
.CopySpec into(Object destPath, Action<? super CopySpec> copySpec)
CopySpec
with the given destination path.
The destination is evaluated as per Project.file(Object)
.destPath
- Path to the destination directory for a CopycopySpec
- The action to use to configure the child CopySpec
.CopySpec rename(Closure closure)
rename
in interface CopyProcessingSpec
closure
- rename closureCopySpec rename(Transformer<String,String> renamer)
rename
in interface CopyProcessingSpec
renamer
- rename functionCopySpec rename(String sourceRegEx, String replaceWith)
Example:
rename '(.*)_OEM_BLUE_(.*)', '$1$2'would map the file 'style_OEM_BLUE_.css' to 'style.css'
rename
in interface CopyProcessingSpec
sourceRegEx
- Source regular expressionreplaceWith
- Replacement string (use $ syntax for capture groups)CopyProcessingSpec rename(Pattern sourceRegEx, String replaceWith)
CopyProcessingSpec.rename(String, String)
.rename
in interface CopyProcessingSpec
sourceRegEx
- Source regular expressionreplaceWith
- Replacement string (use $ syntax for capture groups)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'])
filter
in interface ContentFilterable
properties
- map of filter propertiesfilterType
- Class of filter to addCopySpec 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)
filter
in interface ContentFilterable
filterType
- Class of filter to addCopySpec filter(Closure closure)
null
to remove the line. If every line is
removed, the result will be an empty file, not an absent one.filter
in interface ContentFilterable
closure
- to implement line based filteringCopySpec filter(Transformer<String,String> transformer)
null
to remove the line. If every line is
removed, the result will be an empty file, not an absent one.filter
in interface ContentFilterable
transformer
- to implement line based filteringCopySpec 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.
expand
in interface ContentFilterable
properties
- reference-to-value map for substitutionCopySpec 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 }
expand
in interface ContentFilterable
properties
- reference-to-value map for substitutionaction
- action to perform additional configuration of the underlying template engineCopySpec eachFile(Action<? super FileCopyDetails> action)
eachFile
in interface CopyProcessingSpec
action
- The action to execute.CopySpec eachFile(Closure closure)
FileCopyDetails
as its parameter. Actions are executed in the order
added, and are inherited from the parent spec.eachFile
in interface CopyProcessingSpec
closure
- The action to execute.String getFilteringCharset()
void setFilteringCharset(String charset)
charset
- the name of the charset to use when filtering files