# ProjectLayout

API Documentation: | `ProjectLayout`

Provides access to several important locations for a project.

An instance of this type can be injected into a task, plugin or other object by annotating a public constructor or method with `javax.inject.Inject`. It is also available via `Project.getLayout()`.

### Properties

Property | Description
`buildDirectory` | The build directory for the project.
`projectDirectory` | The project directory.

### Methods

Method | Description
`dir(file)` | Creates a `Directory` provider whose location is calculated from the given `Provider`.
`file(file)` | Creates a `RegularFile` provider whose location is calculated from the given `Provider`.
`files(paths)` | Creates a read-only `FileCollection` containing the given files, as defined by `Project.files(java.lang.Object[])`.

### Script blocks

No script blocks

### Property details

#### `DirectoryProperty` `buildDirectory`

The build directory for the project.

#### `Directory` `projectDirectory` (read-only)

The project directory.

### Method details

#### ``Provider`<`Directory`>` `dir`(``Provider`<`File`>` file)

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

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

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

#### `FileCollection` `files`(``Object`...` paths)

Creates a read-only `FileCollection` containing the given files, as defined by `Project.files(java.lang.Object[])`.

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