Package: org.gradle.api.file

## [Java] Interface SourceDirectorySet

- org.gradle.api.file.FileTree

- All Superinterfaces:
    AntBuilderAware, FileCollection, Named, PatternFilterable, Buildable, FileTree

  A `SourceDirectorySet` represents a set of source files composed from a set of source directories, along with associated include and exclude patterns.

  TODO - configure includes/excludes for individual source dirs, and sync up with CopySpec TODO - allow add FileTree

- - ### Methods Summary

    Methods
    Type | Name and description
    --- | ---
    `PatternFilterable` | `getFilter()` Returns the filter used to select the source from the source directories.
    `String` | `getName()` A concise name for the source directory set (typically used to identify it in a collection).
    `Set<DirectoryTree>` | `getSrcDirTrees()` Returns the source directory trees which make up this set.
    `Set<File>` | `getSrcDirs()` Returns the source directories which make up this set.
    `SourceDirectorySet` | `setSrcDirs(Iterable<?> srcPaths)` Sets the source directories for this set.
    `SourceDirectorySet` | `source(SourceDirectorySet source)` Adds the given source to this set.
    `SourceDirectorySet` | `srcDir(Object srcPath)` Adds the given source directory to this set.
    `SourceDirectorySet` | `srcDirs(Object... srcPaths)` Adds the given source directories to this set.

  - ### Inherited Methods Summary

    Inherited Methods
    Methods inherited from class | Name
    --- | ---
    `interface FileTree` | `getAsFileTree, getFiles, matching, matching, plus, visit, visit`
    `interface Named` | `getName`
    `interface PatternFilterable` | `exclude, exclude, exclude, exclude, getExcludes, getIncludes, include, include, include, include, setExcludes, setIncludes`

- - ### Method Detail

    - #### public PatternFilterable getFilter()

      Returns the filter used to select the source from the source directories. These filter patterns are applied after the include and exclude patterns of the source directory set itself. Generally, the filter patterns are used to select certain types of files, eg `*.java`.

      Returns:
        The filter patterns.

    - #### public String getName()

      A concise name for the source directory set (typically used to identify it in a collection).

    - #### public Set<DirectoryTree> getSrcDirTrees()

      Returns the source directory trees which make up this set. Does not filter source directories which do not exist.

      Returns:
        The source directory trees. Returns an empty set when this set contains no source directories.

    - #### public Set<File> getSrcDirs()

      Returns the source directories which make up this set. Does not filter source directories which do not exist.

      Returns:
        The source directories. Returns an empty set when this set contains no source directories.

    - #### public SourceDirectorySet setSrcDirs(Iterable<?> srcPaths)

      Sets the source directories for this set.

      Parameters:
        `srcPaths` - The source directories. These are evaluated as per Project.files
      Returns:
        this

    - #### public SourceDirectorySet source(SourceDirectorySet source)

      Adds the given source to this set.

      Parameters:
        `source` - The source to add.
      Returns:
        this

    - #### public SourceDirectorySet srcDir(Object srcPath)

      Adds the given source directory to this set.

      Parameters:
        `srcPath` - The source directory. This is evaluated as per Project.file
      Returns:
        this

    - #### public SourceDirectorySet srcDirs(Object... srcPaths)

      Adds the given source directories to this set.

      Parameters:
        `srcPaths` - The source directories. These are evaluated as per Project.files
      Returns:
        this