# Class Sync

java.lang.Object
org.gradle.api.internal.AbstractTask
org.gradle.api.DefaultTask
org.gradle.api.internal.ConventionTask
org.gradle.api.tasks.AbstractCopyTask
org.gradle.api.tasks.Sync

All Implemented Interfaces:
  `Comparable<Task>, ContentFilterable, CopyProcessingSpec, CopySourceSpec, CopySpec, org.gradle.api.internal.DynamicObjectAware, org.gradle.api.internal.file.copy.CopySpecSource, org.gradle.api.internal.IConventionAware, org.gradle.api.internal.TaskInternal, Named, ExtensionAware, Task, PatternFilterable, Configurable<Task>`

@DisableCachingByDefault(because="Not worth caching") public abstract class Sync extends AbstractCopyTask
Synchronizes the contents of a destination directory with some source directories and files.

This task is like the `Copy` task, except the destination directory will only contain the files copied. All files that exist in the destination directory will be deleted before copying files, unless a `preserve(Action)` is specified.

Examples:

    // Sync can be used like a Copy task
    // See the Copy documentation for more examples
    task syncDependencies(type: Sync) {
        from 'my/shared/dependencyDir'
        into 'build/deps/compile'
    }

    // You can preserve output that already exists in the
    // destination directory. Files matching the preserve
    // filter will not be deleted.
    task sync(type: Sync) {
        from 'source'
        into 'dest'
        preserve {
            include 'extraDir/**'
            include 'dir1/**'
            exclude 'dir1/extra.txt'
        }
    }

Since:
  0.9

- ## Nested Class Summary

  ### Nested classes/interfaces inherited from interface Named

  `Named.Namer`

- ## Field Summary

  ### Fields inherited from interface Task

  `TASK_ACTION, TASK_CONSTRUCTOR_ARGS, TASK_DEPENDS_ON, TASK_DESCRIPTION, TASK_GROUP, TASK_NAME, TASK_OVERWRITE, TASK_TYPE`

- ## Constructor Summary

  Constructors
  Constructor
  Description
  `Sync()`

- ## Method Summary

  Modifier and Type
  Method
  Description
  `protected org.gradle.api.internal.file.copy.CopyAction`
  `createCopyAction()`
  Create copy action.
  `protected org.gradle.api.internal.file.copy.CopySpecInternal`
  `createRootSpec()`
  Create root spec.
  `protected abstract org.gradle.internal.file.Deleter`
  `getDeleter()`
  `File`
  `getDestinationDir()`
  Returns the directory to copy files into.
  `DirectoryProperty`
  `getDestinationDirectory()`
  The directory to copy files into.
  `PatternFilterable`
  `getPreserve()`
  Returns the filter that defines which files to preserve in the destination directory.
  `org.gradle.api.internal.file.copy.DestinationRootCopySpec`
  `getRootSpec()`
  `Sync`
  `preserve(Action<? super PatternFilterable> action)`
  Configures the filter that defines which files to preserve in the destination directory.
  `void`
  `setDestinationDir(File destinationDir)`
  Sets the directory to copy files into.

  ### Methods inherited from class AbstractCopyTask

  `copy, createCopyActionExecuter, dirPermissions, eachFile, eachFile, exclude, exclude, exclude, exclude, expand, expand, filePermissions, filesMatching, filesMatching, filesNotMatching, filesNotMatching, filter, filter, filter, filter, from, from, from, getDirectoryFileTreeFactory, getDirPermissions, getDocumentationRegistry, getDuplicatesStrategy, getExcludes, getFileLookup, getFilePermissions, getFileResolver, getFileSystem, getFilteringCharset, getIncludeEmptyDirs, getIncludes, getInstantiator, getMainSpec, getObjectFactory, getPropertyFactory, getSource, include, include, include, include, into, into, into, isCaseSensitive, rename, rename, rename, rename, setCaseSensitive, setDuplicatesStrategy, setExcludes, setFilteringCharset, setIncludeEmptyDirs, setIncludes, with`

  ### Methods inherited from class org.gradle.api.internal.ConventionTask

  `conventionMapping, conventionMapping, getConventionMapping`

  ### Methods inherited from class DefaultTask

  `compareTo, configure, dependsOn, doFirst, doFirst, doFirst, doLast, doLast, doLast, finalizedBy, getActions, getAnt, getDependsOn, getDescription, getDestroyables, getDidWork, getEnabled, getExtensions, getFinalizedBy, getGroup, getInputs, getLocalState, getLogger, getLogging, getMustRunAfter, getName, getOutputs, getPath, getProject, getShouldRunAfter, getState, getTaskDependencies, getTemporaryDir, getTimeout, hasProperty, mustRunAfter, onlyIf, onlyIf, onlyIf, property, setActions, setDependsOn, setDescription, setDidWork, setEnabled, setFinalizedBy, setGroup, setMustRunAfter, setOnlyIf, setOnlyIf, setOnlyIf, setProperty, setShouldRunAfter, shouldRunAfter, usesService`

  ### Methods inherited from class org.gradle.api.internal.AbstractTask

  `acceptServiceReferences, appendParallelSafeAction, doNotTrackState, doNotTrackStateIf, getAsDynamicObject, getIdentityPath, getImpliesSubProjects, getLifecycleDependencies, getLoggingManager, getOnlyIf, getReasonNotToTrackState, getReasonsNotToTrackState, getReasonTaskIsIncompatibleWithConfigurationCache, getRequiredServices, getServices, getSharedResources, getStandardOutputCapture, getTaskActions, getTaskIdentity, getTemporaryDirFactory, hasTaskActions, injectIntoNewInstance, isCompatibleWithConfigurationCache, isEnabled, isHasCustomActions, notCompatibleWithConfigurationCache, prependParallelSafeAction, restoreOnlyIf, restoreTaskActions, service, setImpliesSubProjects`

  ### Methods inherited from class Object

  `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

  ### Methods inherited from interface Task

  `doNotTrackState, notCompatibleWithConfigurationCache, service`

- ## Constructor Details

  - ### Sync

    public Sync()

- ## Method Details

  - ### createCopyAction

    protected org.gradle.api.internal.file.copy.CopyAction createCopyAction()
    Description copied from class: `AbstractCopyTask`
    Create copy action.
    Specified by:
      `createCopyAction` in class `AbstractCopyTask`

  - ### createRootSpec

    protected org.gradle.api.internal.file.copy.CopySpecInternal createRootSpec()
    Description copied from class: `AbstractCopyTask`
    Create root spec.
    Overrides:
      `createRootSpec` in class `AbstractCopyTask`

  - ### getRootSpec

    public org.gradle.api.internal.file.copy.DestinationRootCopySpec getRootSpec()
    Specified by:
      `getRootSpec` in interface `org.gradle.api.internal.file.copy.CopySpecSource`
    Overrides:
      `getRootSpec` in class `AbstractCopyTask`

  - ### getDestinationDirectory

    @Incubating @OutputDirectory public DirectoryProperty getDestinationDirectory()
    The directory to copy files into.

    Setting this property is equivalent to calling `AbstractCopyTask.into(Object)` on this task, and reading it reflects the destination configured through `AbstractCopyTask.into(Object)` or `setDestinationDir(File)`.

    Returns:
      the destination directory property
    Since:
      9.8.0

  - ### getDestinationDir

    @ReplacedBy("destinationDirectory") public File getDestinationDir()
    Returns the directory to copy files into.
    Returns:
      The destination dir.
    Since:
      0.9

  - ### setDestinationDir

    public void setDestinationDir(File destinationDir)
    Sets the directory to copy files into. This is the same as calling `AbstractCopyTask.into(Object)` on this task.
    Parameters:
      `destinationDir` - The destination directory. Must not be null.
    Since:
      0.9

  - ### getPreserve

    @Internal public PatternFilterable getPreserve()
    Returns the filter that defines which files to preserve in the destination directory.
    Returns:
      the filter defining the files to preserve
    Since:
      3.1
    See Also:
      - `getDestinationDir()`

  - ### preserve

    public Sync preserve(Action<? super PatternFilterable> action)
    Configures the filter that defines which files to preserve in the destination directory.
    Parameters:
      `action` - Action for configuring the preserve filter
    Returns:
      this
    Since:
      3.1
    See Also:
      - `getDestinationDir()`

  - ### getDeleter

    @Inject protected abstract org.gradle.internal.file.Deleter getDeleter()