# Interface BuildCacheConfiguration

public interface BuildCacheConfiguration
Configuration for the build cache for an entire Gradle build.

Since:
  3.5

- ## Method Summary

  Modifier and Type
  Method
  Description
  `DirectoryBuildCache`
  `getLocal()`
  Returns the local directory cache configuration.
  `@Nullable BuildCache`
  `getRemote()`
  Returns the remote cache configuration.
  `void`
  `local(Action<? super DirectoryBuildCache> configuration)`
  Executes the given action against the local configuration.
  `<T extends BuildCache>
  void`
  `registerBuildCacheService(Class<T> configurationType, Class<? extends BuildCacheServiceFactory<? super T>> buildCacheServiceFactoryType)`
  Registers a custom build cache type.
  `<T extends BuildCache>
  T`
  `remote(Class<T> type)`
  Configures a remote cache with the given type.
  `<T extends BuildCache>
  T`
  `remote(Class<T> type, Action<? super T> configuration)`
  Configures a remote cache with the given type.
  `void`
  `remote(Action<? super BuildCache> configuration)`
  Executes the given action against the currently configured remote cache.

- ## Method Details

  - ### registerBuildCacheService

    <T extends BuildCache> void registerBuildCacheService(Class<T> configurationType, Class<? extends BuildCacheServiceFactory<? super T>> buildCacheServiceFactoryType)
    Registers a custom build cache type.
    Parameters:
      `configurationType` - Configuration type used to provide parameters to a `BuildCacheService`
      `buildCacheServiceFactoryType` - Implementation type of `BuildCacheServiceFactory` that is used to create a `BuildCacheService`

  - ### getLocal

    DirectoryBuildCache getLocal()
    Returns the local directory cache configuration.

  - ### local

    void local(Action<? super DirectoryBuildCache> configuration)
    Executes the given action against the local configuration.
    Parameters:
      `configuration` - the action to execute against the local cache configuration.

  - ### getRemote

    @Nullable BuildCache getRemote()
    Returns the remote cache configuration.

  - ### remote

    <T extends BuildCache> T remote(Class<T> type)
    Configures a remote cache with the given type.

    If a remote build cache has already been configured with a different type, this method replaces it.

    Storing ("push") in the remote build cache is disabled by default.

    Parameters:
      `type` - the type of remote cache to configure.

  - ### remote

    <T extends BuildCache> T remote(Class<T> type, Action<? super T> configuration)
    Configures a remote cache with the given type.

    If a remote build cache has already been configured with a different type, this method replaces it.

    If a remote build cache has already been configured with the same, this method configures it.

    Storing ("push") in the remote build cache is disabled by default.

    Parameters:
      `type` - the type of remote cache to configure.
      `configuration` - the configuration to execute against the remote cache.

  - ### remote

    void remote(Action<? super BuildCache> configuration)
    Executes the given action against the currently configured remote cache.
    Parameters:
      `configuration` - the action to execute against the currently configured remote cache.
    Throws:
      `IllegalStateException` - If no remote cache has been assigned yet