Package org.gradle.api.services

## Annotation Type ServiceReference

-     @Documented
      @Retention(RUNTIME)
      @Target({METHOD,FIELD})
      @Incubating
      public @interface ServiceReference

  Marks a task property as being a holder to a `BuildService`.

  When you annotate a shared build service property with this annotation, there is no need to explicitly declare the association between the task and the service; also, if you provide a service name to the annotation, and a shared build service is registered with that name, it will be automatically assigned to the property when the task is created.

  It is an error to apply this annotation to a property whose type is not a subtype of `BuildService`.

  Since:
    8.0

- - ### Optional Element Summary

    Optional Elements
    Modifier and Type | Optional Element | Description
    --- | --- | ---
    `java.lang.String` | `value` | The optional name of the service which the annotated element references.

- - ### Element Detail

    - #### value

          java.lang.String value

      The optional name of the service which the annotated element references.

      In case a service name is provided, if a shared build service is registered with that name, a provider to the service will be automatically assigned to the property.

      If a shared build service with the specified name is not found, and no value or convention is explicitly set on the property:

      - if the property is optional, an exception will only occur if an attempt is made to obtain the value of the property (see `Provider.get()`);
      - if the property is mandatory, before the task starts executing, a validation error will be issued.
      See Also:
        `Optional`, `Provider.get()`
      Default:
        ""