Class AbstractCopyTask

    • Constructor Detail

      • AbstractCopyTask

        protected AbstractCopyTask()
    • Method Detail

      • 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.nativeintegration.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()
      • getDocumentationRegistry

        @Inject
        protected org.gradle.api.internal.DocumentationRegistry getDocumentationRegistry()
      • getObjectFactory

        @Inject
        protected ObjectFactory getObjectFactory()
      • copy

        protected void copy()
      • createCopyActionExecuter

        protected org.gradle.api.internal.file.copy.CopyActionExecuter createCopyActionExecuter()
      • getSource

        @Internal
        public FileCollection getSource()
        Returns the source files for this task.
        Returns:
        The source files. Never returns null.
      • getRootSpec

        @Internal
        public org.gradle.api.internal.file.copy.CopySpecInternal getRootSpec()
        Specified by:
        getRootSpec in interface org.gradle.api.internal.file.copy.CopySpecSource
      • getMainSpec

        @Internal
        protected org.gradle.api.internal.file.copy.CopySpecInternal getMainSpec()
      • isCaseSensitive

        @Internal
        public boolean isCaseSensitive()
        Specifies whether case-sensitive pattern matching should be used.
        Specified by:
        isCaseSensitive in interface CopySpec
        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:
        setCaseSensitive in interface CopySpec
        Parameters:
        caseSensitive - true for case-sensitive matching.
      • getIncludeEmptyDirs

        @Internal
        public boolean getIncludeEmptyDirs()
        Tells if empty target directories will be included in the copy.
        Specified by:
        getIncludeEmptyDirs in interface CopySpec
        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:
        setIncludeEmptyDirs in interface CopySpec
        Parameters:
        includeEmptyDirs - true if empty target directories should be included in the copy, false otherwise
      • filesMatching

        public AbstractCopyTask filesMatching​(java.lang.String pattern,
                                              Action<? super FileCopyDetails> action)
        Configure the 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.
        Specified by:
        filesMatching in interface CopySpec
        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
      • filesMatching

        public AbstractCopyTask filesMatching​(java.lang.Iterable<java.lang.String> patterns,
                                              Action<? super FileCopyDetails> action)
        Configure the 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.
        Specified by:
        filesMatching in interface CopySpec
        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
      • filesNotMatching

        public AbstractCopyTask filesNotMatching​(java.lang.String pattern,
                                                 Action<? super FileCopyDetails> action)
        Configure the 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.
        Specified by:
        filesNotMatching in interface CopySpec
        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
      • filesNotMatching

        public AbstractCopyTask filesNotMatching​(java.lang.Iterable<java.lang.String> patterns,
                                                 Action<? super FileCopyDetails> action)
        Configure the 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.
        Specified by:
        filesNotMatching in interface CopySpec
        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
      • from

        public AbstractCopyTask from​(java.lang.Object sourcePath,
                                     Closure c)
        Specifies the source files or directories for a copy and creates a child CopySourceSpec. The given source path is evaluated as per Project.files(Object...) .
        Specified by:
        from in interface CopySourceSpec
        Specified by:
        from in interface CopySpec
        Parameters:
        sourcePath - Path to source for the copy
        c - closure for configuring the child CopySourceSpec
      • from

        public AbstractCopyTask from​(java.lang.Object sourcePath,
                                     Action<? super CopySpec> configureAction)
        Specifies the source files or directories for a copy and creates a child CopySpec. The given source path is evaluated as per Project.files(Object...) .
        Specified by:
        from in interface CopySourceSpec
        Specified by:
        from in interface CopySpec
        Parameters:
        sourcePath - Path to source for the copy
        configureAction - action for configuring the child CopySpec
      • with

        public 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
         }
         
        Specified by:
        with in interface CopySpec
        Parameters:
        sourceSpecs - The specs to add
        Returns:
        this
      • into

        public AbstractCopyTask into​(java.lang.Object destDir)
        Specifies the destination directory for a copy. The destination is evaluated as per Project.file(Object).
        Specified by:
        into in interface CopyProcessingSpec
        Specified by:
        into in interface CopySpec
        Parameters:
        destDir - Path to the destination directory for a Copy
        Returns:
        this
      • into

        public AbstractCopyTask into​(java.lang.Object destPath,
                                     Closure configureClosure)
        Creates and configures a child CopySpec with the given destination path. The destination is evaluated as per Project.file(Object).
        Specified by:
        into in interface CopySpec
        Parameters:
        destPath - Path to the destination directory for a Copy
        configureClosure - The closure to use to configure the child CopySpec.
        Returns:
        this
      • into

        public CopySpec into​(java.lang.Object destPath,
                             Action<? super CopySpec> copySpec)
        Creates and configures a child CopySpec with the given destination path. The destination is evaluated as per Project.file(Object).
        Specified by:
        into in interface CopySpec
        Parameters:
        destPath - Path to the destination directory for a Copy
        copySpec - The action to use to configure the child CopySpec.
        Returns:
        this
      • include

        public AbstractCopyTask 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 interface CopySpec
        Specified by:
        include in interface PatternFilterable
        Parameters:
        includes - a vararg list of include patterns
        Returns:
        this
        See Also:
        Pattern Format
      • include

        public AbstractCopyTask 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 interface CopySpec
        Specified by:
        include in interface PatternFilterable
        Parameters:
        includes - a Iterable providing more include patterns
        Returns:
        this
        See Also:
        Pattern Format
      • include

        public AbstractCopyTask 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 interface CopySpec
        Specified by:
        include in interface PatternFilterable
        Parameters:
        includeSpec - the spec to add
        Returns:
        this
        See Also:
        Pattern Format
      • include

        public AbstractCopyTask include​(Closure includeSpec)
        Adds an include spec. This method may be called multiple times to append new specs. The given closure is passed a 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.
        Specified by:
        include in interface CopySpec
        Specified by:
        include in interface PatternFilterable
        Parameters:
        includeSpec - the spec to add
        Returns:
        this
        See Also:
        Pattern Format
      • exclude

        public AbstractCopyTask 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 interface CopySpec
        Specified by:
        exclude in interface PatternFilterable
        Parameters:
        excludes - a vararg list of exclude patterns
        Returns:
        this
        See Also:
        Pattern Format
      • exclude

        public AbstractCopyTask 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 interface CopySpec
        Specified by:
        exclude in interface PatternFilterable
        Parameters:
        excludes - a Iterable providing new exclude patterns
        Returns:
        this
        See Also:
        Pattern Format
      • exclude

        public AbstractCopyTask 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 interface CopySpec
        Specified by:
        exclude in interface PatternFilterable
        Parameters:
        excludeSpec - the spec to add
        Returns:
        this
        See Also:
        Pattern Format
      • exclude

        public AbstractCopyTask exclude​(Closure excludeSpec)
        Adds an exclude spec. This method may be called multiple times to append new specs.The given closure is passed a 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.
        Specified by:
        exclude in interface CopySpec
        Specified by:
        exclude in interface PatternFilterable
        Parameters:
        excludeSpec - the spec to add
        Returns:
        this
        See Also:
        Pattern Format
      • getIncludes

        @Internal
        public java.util.Set<java.lang.String> getIncludes()
        Returns the set of include patterns.
        Specified by:
        getIncludes in interface PatternFilterable
        Returns:
        The include patterns. Returns an empty set when there are no include patterns.
      • getExcludes

        @Internal
        public java.util.Set<java.lang.String> getExcludes()
        Returns the set of exclude patterns.
        Specified by:
        getExcludes in interface PatternFilterable
        Returns:
        The exclude patterns. Returns an empty set when there are no exclude patterns.
      • rename

        public AbstractCopyTask 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 interface CopyProcessingSpec
        Specified by:
        rename in interface CopySpec
        Parameters:
        closure - rename closure
        Returns:
        this
      • rename

        public AbstractCopyTask rename​(Transformer<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 interface CopyProcessingSpec
        Specified by:
        rename in interface CopySpec
        Parameters:
        renamer - rename function
        Returns:
        this
      • rename

        public AbstractCopyTask 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 interface CopyProcessingSpec
        Specified by:
        rename in interface CopySpec
        Parameters:
        sourceRegEx - Source regular expression
        replaceWith - Replacement string (use $ syntax for capture groups)
        Returns:
        this
      • filter

        public AbstractCopyTask 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. 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'])
         
        Specified by:
        filter in interface ContentFilterable
        Specified by:
        filter in interface CopySpec
        Parameters:
        properties - map of filter properties
        filterType - Class of filter to add
        Returns:
        this
      • filter

        public AbstractCopyTask 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. Include org.apache.tools.ant.filters.* for access to all the standard Ant filters.

        Examples:

            filter(StripJavaComments)
            filter(com.mycompany.project.CustomFilter)
         
        Specified by:
        filter in interface ContentFilterable
        Specified by:
        filter in interface CopySpec
        Parameters:
        filterType - Class of filter to add
        Returns:
        this
      • filter

        public AbstractCopyTask 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 or null to remove the line. If every line is removed, the result will be an empty file, not an absent one.
        Specified by:
        filter in interface ContentFilterable
        Specified by:
        filter in interface CopySpec
        Parameters:
        closure - to implement line based filtering
        Returns:
        this
      • filter

        public AbstractCopyTask filter​(Transformer<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 or null to remove the line. If every line is removed, the result will be an empty file, not an absent one.
        Specified by:
        filter in interface ContentFilterable
        Specified by:
        filter in interface CopySpec
        Parameters:
        transformer - to implement line based filtering
        Returns:
        this
      • expand

        public AbstractCopyTask 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 then ContentFilterable.expand(Map, Action) should be used to disable this behavior.

        Specified by:
        expand in interface ContentFilterable
        Specified by:
        expand in interface CopySpec
        Parameters:
        properties - reference-to-value map for substitution
        Returns:
        this
      • expand

        public AbstractCopyTask 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 by ExpandDetails.getEscapeBackslash() property. It should be set to true to disable escape sequences conversion:

          expand(one: '1', two: 2) {
              escapeBackslash = true
          }
         
        Specified by:
        expand in interface ContentFilterable
        Specified by:
        expand in interface CopySpec
        Parameters:
        properties - reference-to-value map for substitution
        action - action to perform additional configuration of the underlying template engine
        Returns:
        this
      • getDirMode

        @Internal
        @Deprecated
        public java.lang.Integer getDirMode()
        Deprecated.
        Returns the Unix permissions to use for the target directories. null means that existing permissions are preserved. It is dependent on the copy action implementation whether these permissions will actually be applied.
        Specified by:
        getDirMode in interface CopyProcessingSpec
        Returns:
        The directory permissions, or null if existing permissions should be preserved.
      • getFileMode

        @Internal
        @Deprecated
        public java.lang.Integer getFileMode()
        Deprecated.
        Returns the Unix permissions to use for the target files. null means that existing permissions are preserved. It is dependent on the copy action implementation whether these permissions will actually be applied.
        Specified by:
        getFileMode in interface CopyProcessingSpec
        Returns:
        The file permissions, or null if existing permissions should be preserved.
      • setDirMode

        @Deprecated
        public AbstractCopyTask setDirMode​(@Nullable
                                           java.lang.Integer mode)
        Deprecated.
        Sets the Unix permissions to use for the target directories. null means that existing permissions are preserved. It is dependent on the copy action implementation whether these permissions will actually be applied.
        Specified by:
        setDirMode in interface CopyProcessingSpec
        Parameters:
        mode - The directory permissions.
        Returns:
        this
      • setFileMode

        @Deprecated
        public AbstractCopyTask setFileMode​(@Nullable
                                            java.lang.Integer mode)
        Deprecated.
        Sets the Unix permissions to use for the target files. null means that existing permissions are preserved. It is dependent on the copy action implementation whether these permissions will actually be applied.
        Specified by:
        setFileMode in interface CopyProcessingSpec
        Parameters:
        mode - The file permissions.
        Returns:
        this
      • eachFile

        public AbstractCopyTask 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 interface CopyProcessingSpec
        Specified by:
        eachFile in interface CopySpec
        Parameters:
        action - The action to execute.
        Returns:
        this
      • eachFile

        public AbstractCopyTask eachFile​(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 a FileCopyDetails as its parameter. Actions are executed in the order added, and are inherited from the parent spec.
        Specified by:
        eachFile in interface CopyProcessingSpec
        Specified by:
        eachFile in interface CopySpec
        Parameters:
        closure - The action to execute.
        Returns:
        this
      • getFilteringCharset

        @Internal
        public java.lang.String getFilteringCharset()
        Gets the charset used to read and write files when filtering. By default, the JVM default charset is used.
        Specified by:
        getFilteringCharset in interface CopySpec
        Returns:
        the charset used to read and write files when filtering
      • setFilteringCharset

        public void setFilteringCharset​(java.lang.String charset)
        Specifies the charset used to read and write files when filtering.
        Specified by:
        setFilteringCharset in interface CopySpec
        Parameters:
        charset - the name of the charset to use when filtering files