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
- 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, 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
 }
 - See Also:
- 
Method SummaryModifier and TypeMethodDescriptionAdds 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.expand(Map<String, ?> properties, Action<? super ExpandDetails> action) 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<@Nullable 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.Returns the strategy to use when trying to copy more than one file to the same destination.Gets the charset used to read and write files when filtering.booleanTells if empty target directories will be included in the copy.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<@Nullable String, String> renamer) Renames a source file.voidsetCaseSensitive(boolean caseSensitive) Specifies whether case-sensitive pattern matching should be used for this CopySpec.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.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 interface org.gradle.api.file.CopyProcessingSpecdirPermissions, filePermissions, getDirMode, getDirPermissions, getFileMode, getFilePermissions, setDirMode, setFileModeMethods inherited from interface org.gradle.api.tasks.util.PatternFilterablegetExcludes, getIncludes
- 
Method Details- 
isCaseSensitiveboolean isCaseSensitive()Specifies whether case-sensitive pattern matching should be used.- Returns:
- true for case-sensitive matching.
 
- 
setCaseSensitivevoid setCaseSensitive(boolean caseSensitive) Specifies whether case-sensitive pattern matching should be used for this CopySpec.- Parameters:
- caseSensitive- true for case-sensitive matching.
 
- 
getIncludeEmptyDirsboolean getIncludeEmptyDirs()Tells if empty target directories will be included in the copy.- Returns:
- trueif empty target directories will be included in the copy,- falseotherwise
 
- 
setIncludeEmptyDirsvoid setIncludeEmptyDirs(boolean includeEmptyDirs) Controls if empty target directories should be included in the copy.- Parameters:
- includeEmptyDirs-- trueif empty target directories should be included in the copy,- falseotherwise
 
- 
getDuplicatesStrategyDuplicatesStrategy 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:
 
- 
setDuplicatesStrategyThe strategy to use when trying to copy more than one file to the same destination. Defaults toDuplicatesStrategy.INHERIT, the strategy inherited from the parent copy spec. If no explicit deduplication strategy is set, but duplicates are found, an error is thrown.
- 
filesMatchingConfigure 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.- Parameters:
- pattern- Ant-style pattern used to match against files' relative paths
- action- action called for the FileCopyDetails of each file matching pattern
- Returns:
- this
 
- 
filesMatchingConfigure 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.- Parameters:
- patterns- Ant-style patterns used to match against files' relative paths
- action- action called for the FileCopyDetails of each file matching pattern
- Returns:
- this
 
- 
filesNotMatchingConfigure 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.- Parameters:
- pattern- Ant-style pattern used to match against files' relative paths
- action- action called for the FileCopyDetails of each file that does not match pattern
- Returns:
- this
 
- 
filesNotMatchingConfigure 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.- Parameters:
- patterns- Ant-style patterns used to match against files' relative paths
- action- action called for the FileCopyDetails of each file that does not match any pattern
- Returns:
- this
 
- 
withAdds 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
 
- 
fromSpecifies source files or directories for a copy. The given paths are evaluated as perProject.files(Object...).- Specified by:
- fromin interface- CopySourceSpec
- Parameters:
- sourcePaths- Paths to source files for the copy
 
- 
fromSpecifies 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 interface- CopySourceSpec
- Parameters:
- sourcePath- Path to source for the copy
- c- closure for configuring the child CopySourceSpec
 
- 
fromSpecifies 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 interface- CopySourceSpec
- Parameters:
- sourcePath- Path to source for the copy
- configureAction- action for configuring the child CopySpec
 
- 
setIncludesSet the allowable include patterns. Note that unlikePatternFilterable.include(Iterable)this replaces any previously defined includes.- Specified by:
- setIncludesin interface- PatternFilterable
- Parameters:
- includes- an Iterable providing new include patterns
- Returns:
- this
- See Also:
 
- 
setExcludesSet the allowable exclude patterns. Note that unlikePatternFilterable.exclude(Iterable)this replaces any previously defined excludes.- Specified by:
- setExcludesin interface- PatternFilterable
- Parameters:
- excludes- an Iterable providing new exclude patterns
- Returns:
- this
- See Also:
 
- 
includeAdds 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 interface- PatternFilterable
- Parameters:
- includes- a vararg list of include patterns
- Returns:
- this
- See Also:
 
- 
includeAdds 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 interface- PatternFilterable
- Parameters:
- includes- a Iterable providing more include patterns
- Returns:
- this
- See Also:
 
- 
includeAdds 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 interface- PatternFilterable
- Parameters:
- includeSpec- the spec to add
- Returns:
- this
- See Also:
 
- 
includeAdds 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 interface- PatternFilterable
- Parameters:
- includeSpec- the spec to add
- Returns:
- this
- See Also:
 
- 
excludeAdds 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 interface- PatternFilterable
- Parameters:
- excludes- a vararg list of exclude patterns
- Returns:
- this
- See Also:
 
- 
excludeAdds 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 interface- PatternFilterable
- Parameters:
- excludes- a Iterable providing new exclude patterns
- Returns:
- this
- See Also:
 
- 
excludeAdds 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 interface- PatternFilterable
- Parameters:
- excludeSpec- the spec to add
- Returns:
- this
- See Also:
 
- 
excludeAdds 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 interface- PatternFilterable
- Parameters:
- excludeSpec- the spec to add
- Returns:
- this
- See Also:
 
- 
intoSpecifies the destination directory for a copy. The destination is evaluated as perProject.file(Object).- Specified by:
- intoin interface- CopyProcessingSpec
- Parameters:
- destPath- Path to the destination directory for a Copy
- Returns:
- this
 
- 
intoCreates and configures a childCopySpecwith the given destination path. The destination is evaluated as perProject.file(Object).- Parameters:
- destPath- Path to the destination directory for a Copy
- configureClosure- The closure to use to configure the child- CopySpec.
- Returns:
- this
 
- 
intoCreates and configures a childCopySpecwith the given destination path. The destination is evaluated as perProject.file(Object).- Parameters:
- destPath- Path to the destination directory for a Copy
- copySpec- The action to use to configure the child- CopySpec.
- Returns:
- this
 
- 
renameRenames 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 interface- CopyProcessingSpec
- Parameters:
- closure- rename closure
- Returns:
- this
 
- 
renameRenames 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 interface- CopyProcessingSpec
- Parameters:
- renamer- rename function
- Returns:
- this
 
- 
renameRenames 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 interface- CopyProcessingSpec
- Parameters:
- sourceRegEx- Source regular expression
- replaceWith- Replacement string (use $ syntax for capture groups)
- Returns:
- this
 
- 
renameRenames files based on a regular expression. SeeCopyProcessingSpec.rename(String, String).- Specified by:
- renamein interface- CopyProcessingSpec
- Parameters:
- sourceRegEx- Source regular expression
- replaceWith- Replacement string (use $ syntax for capture groups)
- Returns:
- this
 
- 
filterAdds 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 interface- ContentFilterable
- Parameters:
- properties- map of filter properties
- filterType- Class of filter to add
- Returns:
- this
 
- 
filterAdds 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 interface- ContentFilterable
- Parameters:
- filterType- Class of filter to add
- Returns:
- this
 
- 
filterAdds 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 interface- ContentFilterable
- Parameters:
- closure- to implement line based filtering
- Returns:
- this
 
- 
filterAdds 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 interface- ContentFilterable
- Parameters:
- transformer- to implement line based filtering
- Returns:
- this
 
- 
expandExpands 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(' ')}Note that all escape sequences ( \n,\t,\\, etc) are converted to the symbols they represent, so, for example,\nbecomes newline. If this is undesirable thenContentFilterable.expand(Map, Action)should be used to disable this behavior.- Specified by:
- expandin interface- ContentFilterable
- Parameters:
- properties- reference-to-value map for substitution
- Returns:
- this
 
- 
expandExpands 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(' ')}. 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,\nbecomes newline. This behavior is controlled byExpandDetails.getEscapeBackslash()property. It should be set totrueto disable escape sequences conversion:expand(one: '1', two: 2) { escapeBackslash = true }- Specified by:
- expandin interface- ContentFilterable
- Parameters:
- properties- reference-to-value map for substitution
- action- action to perform additional configuration of the underlying template engine
- Returns:
- this
 
- 
eachFileAdds 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 interface- CopyProcessingSpec
- Parameters:
- action- The action to execute.
- Returns:
- this
 
- 
eachFileAdds 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 interface- CopyProcessingSpec
- Parameters:
- closure- The action to execute.
- Returns:
- this
 
- 
getFilteringCharsetString 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
 
- 
setFilteringCharsetSpecifies 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
 
 
-