Overview | Package | Class | Deprecated | Index | Help
| Groovy Documentation
| FRAMES NO FRAMES
SUMMARY: NESTED | FIELD | METHOD | DETAIL: FIELD | METHOD

## org.gradle.api.tasks.copy
Interface CopySpec

    interface CopySpec

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

CopySpecs may be nested by passing a closure to one of the from methods. The closure creates a child CopySpec and delegates methods in the closure to the child. Child CopySpecs inherit any values specified in the parent. Only the leaf CopySpecs will be used in any copy operations. This allows constructs like:

     into('webroot')
     exclude('**/.svn/**')
     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.

author:
  Steve Appling

Method Summary
`CopySpec` | `exclude(java.lang.String excludes)` Adds an ANT style exclude pattern to the copy specification.
`CopySpec` | `filter(Map map, java.lang.Class filterType)` Adds a content filter to be used during the copy.
`CopySpec` | `filter(java.lang.Class filterType)` Adds a content filter to be used during the copy.
`CopySpec` | `from(java.lang.Object sourcePaths)` Specifies sources for a copy.
`CopySpec` | `from(java.lang.Object sourcePath, Closure c)` Specifies the source for a copy and creates a child CopySpec.
`CopySpec` | `from(java.lang.Iterable sourcePaths)` Specifies sources for a copy.
`CopySpec` | `from(java.lang.Iterable sourcePaths, Closure c)` Specifies sources for a copy and creates a child CopySpec which is configured with the Closure.
`CopySpec` | `include(java.lang.String includes)` Adds an ANT style include pattern to the copy specification.
`CopySpec` | `into(java.lang.Object destPath)` Specifies the destination directory for a copy.
`CopySpec` | `remapTarget(Closure closure)` Maps a source file to a different relative location under the target directory.
`CopySpec` | `rename(java.lang.String sourceRegEx, java.lang.String replaceWith)` Renames files based on a regular expression.

Method Detail

### exclude

    public CopySpec exclude(java.lang.String excludes)

  Adds an ANT style exclude pattern to the copy specification. This method may be called multiple times to append new patterns and multiple patterns may be specified in a single call. See #include(String[]) include for a description of the syntax for patterns. If this method is not called, then no files will be excluded. If this method is called, then files must not match any exclude pattern to be copied.
  param:
    excludes a vararg list of exclude patterns

### filter

    public CopySpec filter(Map map, java.lang.Class 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 parameters may be specified using groovy map syntax.

  Examples:

          filter(HeadFilter, lines:25, skip:2)
          filter(ReplaceTokens, tokens:[copyright:'2009', version:'2.3.1'])

  param:
    map map of filter parameters
  param:
    filterType Class of filter to add

### filter

    public CopySpec filter(java.lang.Class 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)

  param:
    filterType Class of filter to add

### from

    public CopySpec from(java.lang.Object sourcePaths)

  Specifies sources for a copy. The toString() method of each sourcePath is used to get a path. The paths are evaluated like org.gradle.api.Project#file(Object) Project.file(). Relative paths will be evaluated relative to the project directory.
  param:
    sourcePaths Paths to source directories for the copy

### from

    public CopySpec from(java.lang.Object sourcePath, Closure c)

  Specifies the source for a copy and creates a child CopySpec. SourcePath.toString is used as the path. The source is set on the child CopySpec, not on this one. This may be a path to a single file to copy or to a directory. If the path is to a directory, then the contents of the directory will be copied. The paths are evaluated like org.gradle.api.Project#file(Object) Project.file().
  param:
    sourcePath Path to source for the copy
  param:
    c closure for configuring the child CopySpec

### from

    public CopySpec from(java.lang.Iterable sourcePaths)

  Specifies sources for a copy. The paths are evaluated like org.gradle.api.Project#file(Object) Project.file().
  param:
    sourcePaths Paths to source directories for the copy

### from

    public CopySpec from(java.lang.Iterable sourcePaths, Closure c)

  Specifies sources for a copy and creates a child CopySpec which is configured with the Closure. The sources are set on the child CopySpec, not on this one. The paths are evaluated like org.gradle.api.Project#file(Object) Project.file().
  param:
    sourcePaths Paths to source directories for the copy
  param:
    c Closure for configuring the child CopySpec

### include

    public CopySpec include(java.lang.String includes)

  Adds an ANT style include pattern to the copy specification. This method may be called multiple times to append new patterns and multiple patterns may be specified in a single call. Patterns may include:
  - '*' to match any number of characters
  - '?' to match any single character
  - '**' to match any number of directories or files
  Either '/' or '\' may be used in a pattern to separate directories. Patterns ending with '/' or '\' will have '**' automatically appended. Examples:

       all files ending with 'jsp' (including subdirectories)
          **/*.jsp

       all files beginning with 'template_' in the level1/level2 directory
          level1/level2/template_*

       all files (including subdirectories) beneath src/main/webapp
         src/main/webapp/

       all files beneath any CVS directory (including subdirectories) under src/main/java
         src/main/java/**/CVS/**

  If this method is not called, then all files beneath the source directory will be included. If this method is called, then a file must match at least one of the include patterns to be copied.
  param:
    includes a vararg list of include patterns

### into

    public CopySpec into(java.lang.Object destPath)

  Specifies the destination directory for a copy. The path is evaluated relative to the project directory.
  param:
    destPath Path to the destination directory for a Copy

### remapTarget

    public CopySpec remapTarget(Closure closure)

  Maps a source file to a different relative location under the target directory. The closure will be called with a single parameter, the File object for the default location of the copy. This File will have the same relative path from the destination directory that the source file has from its source directory. The closure should return a File object with a new target destination.
  param:
    closure remap closure

### rename

    public 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'
  param:
    sourceRegEx Source regular expression
  param:
    replaceWith Replacement string (use $ syntax for capture groups)

Groovy Documentation