@NonNullApi

# Package org.gradle.api

Start Here: Gradle's `Project` API, which is available from your build files. The API used from your build files is made up of 2 main interfaces:

- `Project`
- `Task`

- Interface Summary
  Interface | Description
  --- | ---
  Action<T> | Performs some action against objects of type T.
  ActionConfiguration | Allows specification of configuration for some action.
  Buildable | A `Buildable` represents an artifact or set of artifacts which are built by one or more `Task` instances.
  BuildableComponentSpec | A `ComponentSpec` that is directly `Buildable` via a specified task.
  CheckableComponentSpec | A `ComponentSpec` that is directly checkable via a specified task.
  Describable | Types can implement this interface when they provide a human-readable display name.
  DomainObjectCollection<T> | A `DomainObjectCollection` is a specialised `Collection` that adds the ability to receive modification notifications and use live filtered sub collections.
  DomainObjectSet<T> | A `DomainObjectSet` is a specialization of `DomainObjectCollection` that guarantees `Set` semantics.
  ExtensiblePolymorphicDomainObjectContainer<T> | A `PolymorphicDomainObjectContainer` that can be extended at runtime to create elements of new types.
  Named | Types can implement this interface and use the embedded `Named.Namer` implementation, to satisfy API that calls for a namer.
  NamedDomainObjectCollection<T> | A `NamedDomainObjectCollection` represents a collection of objects that have an inherent, constant, name.
  NamedDomainObjectCollectionSchema | Schema of named domain object collections.
  NamedDomainObjectCollectionSchema.NamedDomainObjectSchema | Schema of a named domain object.
  NamedDomainObjectContainer<T> | A named domain object container is a specialization of `NamedDomainObjectSet` that adds the ability to create instances of the element type.
  NamedDomainObjectFactory<T> | A factory for named objects of type `T`.
  NamedDomainObjectList<T> | A specialization of `NamedDomainObjectCollection` that also implements `List`.
  NamedDomainObjectProvider<T> | Provides a domain object of the given type.
  NamedDomainObjectSet<T> | A specialization of `NamedDomainObjectCollection` that also implements `Set` and orders objects by their inherent name.
  Namer<T> | A namer is capable of providing a name based on some inherent characteristic of an object.
  Plugin<T> | A `Plugin` represents an extension to Gradle.
  PolymorphicDomainObjectContainer<T> | A `NamedDomainObjectContainer` that allows you to create objects with different types.
  Project | This interface is the main API you use to interact with Gradle from your build file.
  ProjectEvaluationListener | An `ProjectEvaluationListener` is notified when a project is evaluated.
  ProjectState | `ProjectState` provides information about the execution state of a project.
  Rule | A `Rule` represents some action to perform when an unknown domain object is referenced.
  Script | This interface is implemented by all Gradle scripts to add in some Gradle-specific methods.
  Task | A `Task` represents a single atomic piece of work for a build, such as compiling classes or generating javadoc.
  Transformer<OUT,​IN> | A `Transformer` transforms objects of type.
  XmlProvider | Provides various ways to access the content of an XML document.

- Class Summary
  Class | Description
  --- | ---
  AntBuilder | An `AntBuilder` allows you to use Ant from your build script.
  DefaultTask | `DefaultTask` is the standard `Task` implementation.
  Named.Namer | An implementation of the namer interface for objects implementing the named interface.
  Namer.Comparator<T> | A comparator implementation based on the names returned by the given namer.
  Task.Namer | A `Namer` namer for tasks that returns `Task.getName()`.

- Enum Summary
  Enum | Description
  --- | ---
  AntBuilder.AntMessagePriority | Represents the normal Ant message priorities.
  JavaVersion | An enumeration of Java versions.
  PathValidation | An enumeration for describing validation policies for file paths.

- Exception Summary
  Exception | Description
  --- | ---
  BuildCancelledException | A `BuildCancelledException` is thrown when a build is interrupted due to cancellation request.
  CircularReferenceException | A `CircularReferenceException` is thrown if circular references exists between tasks, the project evaluation order or the project dependsOn order.
  GradleException | `GradleException` is the base class of all exceptions thrown by Gradle.
  GradleScriptException | A `GradleScriptException` is thrown when an exception occurs in the compilation or execution of a script.
  IllegalDependencyNotation | This exceptions is thrown, if a dependency is declared with a illegal notation.
  InvalidActionClosureException | Thrown when a `Closure` is given as an `Action` implementation, but has the wrong signature.
  InvalidUserCodeException | A `InvalidUserCodeException` is thrown when user-provided code cannot be executed.
  InvalidUserDataException | A `InvalidUserDataException` is thrown, if a user is providing illegal data for the build.
  ProjectConfigurationException | Indicates a problem that occurs during project configuration.
  UncheckedIOException | `UncheckedIOException` is used to wrap an `IOException` into an unchecked exception.
  UnknownDomainObjectException | A `UnknownDomainObjectException` is the super class of all exceptions thrown when a given domain object cannot be located.
  UnknownProjectException | An `UnknownProjectException` is thrown when a project referenced by path cannot be found.
  UnknownTaskException | An `UnknownTaskException` is thrown when a task referenced by path cannot be found.

- Annotation Types Summary
  Annotation Type | Description
  --- | ---
  HasImplicitReceiver | Marks a SAM interface as a target for lambda expressions / closures where the single parameter is passed as the implicit receiver of the invocation (`this` in Kotlin, `delegate` in Groovy) as if the lambda expression was an extension method of the parameter type.
  Incubating | Indicates that a feature is incubating.
  NonExtensible | Indicates that the type, when DSL enhanced, does not support extensibility.
  NonNullApi | Marks a type or a whole package as providing a non-null API by default.