# Class ProjectBuilder

java.lang.Object
org.gradle.testfixtures.ProjectBuilder

public class ProjectBuilder extends Object

Creates dummy instances of `Project` which you can use in testing custom task and plugin implementations.

To create a project instance:

1. Create a `ProjectBuilder` instance by calling `builder()`.
2. Optionally, configure the builder.
3. Call `build()` to create the `Project` instance.

You can reuse a builder to create multiple `Project` instances.

The `ProjectBuilder` implementation bundled with Gradle 3.0 and 3.1 suffers from a binary compatibility issue exposed by applying plugins compiled with Gradle 2.7 and earlier. Applying those pre-compiled plugins in a ProjectBuilder context will result in a `ClassNotFoundException`.

Since:
  0.9

- ## Method Summary

  Modifier and Type
  Method
  Description
  `Project`
  `build()`
  Creates the project.
  `static ProjectBuilder`
  `builder()`
  Creates a project builder.
  `ProjectBuilder`
  `withGradleUserHomeDir(@Nullable File dir)`
  Specifies the Gradle user home for the builder.
  `ProjectBuilder`
  `withName(String name)`
  Specifies the name for the project
  `ProjectBuilder`
  `withParent(@Nullable Project parent)`
  Specifies the parent project.
  `ProjectBuilder`
  `withProjectDir(@Nullable File dir)`
  Specifies the project directory for the project to build.

  ### Methods inherited from class Object

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

- ## Method Details

  - ### builder

    public static ProjectBuilder builder()
    Creates a project builder.
    Returns:
      The builder
    Since:
      0.9

  - ### withProjectDir

    public ProjectBuilder withProjectDir(@Nullable File dir)
    Specifies the project directory for the project to build.
    Parameters:
      `dir` - The project directory
    Returns:
      The builder
    Since:
      0.9

  - ### withGradleUserHomeDir

    public ProjectBuilder withGradleUserHomeDir(@Nullable File dir)
    Specifies the Gradle user home for the builder. If not set, an empty directory under the project directory will be used.
    Returns:
      The builder
    Since:
      3.0

  - ### withName

    public ProjectBuilder withName(String name)
    Specifies the name for the project
    Parameters:
      `name` - project name
    Returns:
      The builder
    Since:
      1.0

  - ### withParent

    public ProjectBuilder withParent(@Nullable Project parent)
    Specifies the parent project. Use it to create multi-module projects.
    Parameters:
      `parent` - parent project
    Returns:
      The builder
    Since:
      1.0

  - ### build

    public Project build()
    Creates the project.
    Returns:
      The project
    Since:
      0.9