org.gradle.api.file

## Interface ProjectLayout

-     @Incubating
      public interface ProjectLayout

  Provides access to several important locations for a project. An instance of the factory can be injected into a task or plugin by annotating a public constructor or method with `javax.inject.Inject`. It is also available via `Project.getLayout()`.
  Since:
    4.1

- - ### Property Summary

    All Methods Instance Methods Abstract Methods
    Type | Property and Description
    --- | ---
    `DirectoryProperty` | `directory` Creates a new `DirectoryProperty` that uses the project directory to resolve paths, if required.
    `RegularFileProperty` | `file` Creates a new `RegularFileProperty` that uses the project directory to resolve paths, if required.

  - ### Method Summary

    All Methods Instance Methods Abstract Methods Deprecated Methods
    Modifier and Type | Method and Description
    --- | ---
    `ConfigurableFileCollection` | `configurableFiles(Object... paths)` Returns a `ConfigurableFileCollection` containing the given files.
    `DirectoryProperty` | `directoryProperty()` Creates a new `DirectoryProperty` that uses the project directory to resolve paths, if required.
    `DirectoryProperty` | `directoryProperty(Provider<? extends Directory> initialProvider)` Creates a new `DirectoryProperty` that uses the project directory to resolve paths, if required.
    `Provider<RegularFile>` | `file(Provider<File> file)` Creates a `RegularFile` provider whose location is calculated from the given `Provider`.
    `RegularFileProperty` | `fileProperty()` Creates a new `RegularFileProperty` that uses the project directory to resolve paths, if required.
    `RegularFileProperty` | `fileProperty(Provider<? extends RegularFile> initialProvider)` Creates a new `RegularFileProperty` that uses the project directory to resolve paths, if required.
    `FileCollection` | `files(Object... paths)` Creates a `FileCollection` for the given targets.
    `DirectoryProperty` | `getBuildDirectory()` Returns the build directory for the project.
    `Directory` | `getProjectDirectory()` Returns the project directory.
    `DirectoryVar` | `newDirectoryVar()` Deprecated. Use `directoryProperty()` instead.
    `RegularFileVar` | `newFileVar()` Deprecated. Use `fileProperty()` instead.

- - ### Property Detail

    - #### directory

          DirectoryProperty directoryProperty

      Creates a new `DirectoryProperty` that uses the project directory to resolve paths, if required. The property has no initial value.
      Since:
        4.3

    - #### file

          RegularFileProperty fileProperty

      Creates a new `RegularFileProperty` that uses the project directory to resolve paths, if required. The property has no initial value.
      Since:
        4.3

  - ### Method Detail

    - #### getProjectDirectory

          Directory getProjectDirectory()

      Returns the project directory.

    - #### getBuildDirectory

          DirectoryProperty getBuildDirectory()

      Returns the build directory for the project.

    - #### newDirectoryVar

          @Deprecated
          DirectoryVar newDirectoryVar()

      Deprecated. Use `directoryProperty()` instead.
      Creates a new `DirectoryVar` that uses the project directory to resolve paths, if required. The var has no initial value.

    - #### directoryProperty

          DirectoryProperty directoryProperty()

      Creates a new `DirectoryProperty` that uses the project directory to resolve paths, if required. The property has no initial value.
      Since:
        4.3

    - #### directoryProperty

          DirectoryProperty directoryProperty(Provider<? extends Directory> initialProvider)

      Creates a new `DirectoryProperty` that uses the project directory to resolve paths, if required. The property has the initial provider specified.
      Parameters:
        `initialProvider` - initial provider for the property
      Since:
        4.4

    - #### newFileVar

          @Deprecated
          RegularFileVar newFileVar()

      Deprecated. Use `fileProperty()` instead.
      Creates a new `RegularFileVar` that uses the project directory to resolve paths, if required. The var has no initial value.

    - #### fileProperty

          RegularFileProperty fileProperty()

      Creates a new `RegularFileProperty` that uses the project directory to resolve paths, if required. The property has no initial value.
      Since:
        4.3

    - #### fileProperty

          RegularFileProperty fileProperty(Provider<? extends RegularFile> initialProvider)

      Creates a new `RegularFileProperty` that uses the project directory to resolve paths, if required. The property has the initial provider specified.
      Parameters:
        `initialProvider` - initial provider for the property
      Since:
        4.4

    - #### file

          Provider<RegularFile> file(Provider<File> file)

      Creates a `RegularFile` provider whose location is calculated from the given `Provider`.

    - #### files

          FileCollection files(Object... paths)

      Creates a `FileCollection` for the given targets. You can pass any of the following types to this method:

      - A `CharSequence`, including `String` or `GString`. Interpreted relative to the project directory, as per `Project.file(Object)`. A string that starts with `file:` is treated as a file URL.
      - A `File`. Interpreted relative to the project directory, as per `Project.file(Object)`.
      - A `Path` as defined by `Project.file(Object)`.
      - A `URI` or `URL`. The URL's path is interpreted as a file path. Only `file:` URLs are supported.
      - A `Directory` or `RegularFile`.
      - A `Collection`, `Iterable`, or an array that contains objects of any supported type. The elements of the collection are recursively converted to files.
      - A `FileCollection`. The contents of the collection are included in the returned collection.
      - A `Provider` of any supported type. The provider's value is recursively converted to files. If the provider represents an output of a task, that task is executed if the file collection is used as an input to another task.
      - A `Callable` that returns any supported type. The return value of the `call()` method is recursively converted to files. A `null` return value is treated as an empty collection.
      - A `Closure` that returns any of the types listed here. The return value of the closure is recursively converted to files. A `null` return value is treated as an empty collection.
      - A `Task`. Converted to the task's output files. The task is executed if the file collection is used as an input to another task.
      - A `TaskOutputs`. Converted to the output files the related task. The task is executed if the file collection is used as an input to another task.
      - Anything else is treated as a failure.

      The returned file collection is lazy, so that the paths are evaluated only when the contents of the file collection are queried. The file collection is also live, so that it evaluates the above each time the contents of the collection is queried.

      The returned file collection maintains the iteration order of the supplied paths.

      The returned file collection maintains the details of the tasks that produce the files, so that these tasks are executed if this file collection is used as an input to some task.

      This method can also be used to create an empty collection, but the collection may not be mutated later.

      Parameters:
        `paths` - The paths to the files. May be empty.
      Returns:
        The file collection. Never returns null.
      Since:
        4.8

    - #### configurableFiles

          ConfigurableFileCollection configurableFiles(Object... paths)

      Returns a `ConfigurableFileCollection` containing the given files. You can pass any of the following types to this method:

      - A `CharSequence`, including `String` or `GString`. Interpreted relative to the project directory, as per `Project.file(Object)`. A string that starts with `file:` is treated as a file URL.
      - A `File`. Interpreted relative to the project directory, as per `Project.file(Object)`.
      - A `Path` as defined by `Project.file(Object)`.
      - A `URI` or `URL`. The URL's path is interpreted as a file path. Only `file:` URLs are supported.
      - A `Directory` or `RegularFile`.
      - A `Collection`, `Iterable`, or an array that contains objects of any supported type. The elements of the collection are recursively converted to files.
      - A `FileCollection`. The contents of the collection are included in the returned collection.
      - A `Provider` of any supported type. The provider's value is recursively converted to files. If the provider represents an output of a task, that task is executed if the file collection is used as an input to another task.
      - A `Callable` that returns any supported type. The return value of the `call()` method is recursively converted to files. A `null` return value is treated as an empty collection.
      - A `Closure` that returns any of the types listed here. The return value of the closure is recursively converted to files. A `null` return value is treated as an empty collection.
      - A `Task`. Converted to the task's output files. The task is executed if the file collection is used as an input to another task.
      - A `TaskOutputs`. Converted to the output files the related task. The task is executed if the file collection is used as an input to another task.
      - Anything else is treated as a failure.

      The returned file collection is lazy, so that the paths are evaluated only when the contents of the file collection are queried. The file collection is also live, so that it evaluates the above each time the contents of the collection is queried.

      The returned file collection maintains the iteration order of the supplied paths.

      The returned file collection maintains the details of the tasks that produce the files, so that these tasks are executed if this file collection is used as an input to some task.

      This method can also be used to create an empty collection, which can later be mutated to add elements.

      Parameters:
        `paths` - The paths to the files. May be empty.
      Returns:
        The file collection. Never returns null.
      Since:
        4.8