Class ConfigureUtil

  • @Deprecated
    public class ConfigureUtil
    extends java.lang.Object
    Will be removed in Gradle 9.0.
    Contains utility methods to configure objects with Groovy Closures.

    Plugins should avoid using this class and methods that use Closure as this makes the plugin harder to use in other languages. Instead, plugins should create methods that use Action. Here's an example pseudocode:

         interface MyOptions {
             RegularFileProperty getOptionsFile()
         abstract class MyExtension {
             private final MyOptions options
             @Inject abstract ObjectFactory getObjectFactory()
             public MyExtension() {
                 this.options = getObjectFactory().newInstance(MyOptions)
             public void options(Action<? extends MyOptions>  action) {
         extensions.create("myExtension", MyExtension)
         myExtension {
             options {
                 optionsFile = layout.projectDirectory.file("")

    Gradle automatically generates a Closure-taking method at runtime for each method with an Action as a single argument as long as the object is created with ObjectFactory.newInstance(Class, Object...).

    As a last resort, to apply some configuration represented by a Groovy Closure, a plugin can use Project.configure(Object, Closure).

    • Constructor Detail

      • ConfigureUtil

        public ConfigureUtil()
    • Method Detail

      • configureByMap

        public static <T> T configureByMap​(java.util.Map<?,​?> properties,
                                           T delegate)
      • configureByMap

        public static <T> T configureByMap​(java.util.Map<?,​?> properties,
                                           T delegate,
                                           java.util.Collection<?> mandatoryKeys)
      • configure

        public static <T> T configure​(@Nullable
                                      Closure configureClosure,
                                      T target)

        Configures target with configureClosure, via the Configurable interface if necessary.

        If target does not implement Configurable interface, it is set as the delegate of a clone of configureClosure with a resolve strategy of DELEGATE_FIRST.

        If target does implement the Configurable interface, the configureClosure will be passed to delegate's Configurable.configure(Closure) method.

        configureClosure - The configuration closure
        target - The object to be configured
        The delegate param
      • configureUsing

        public static <T> Action<T> configureUsing​(@Nullable
                                                   Closure configureClosure)
        Creates an action that uses the given closure to configure objects of type T.
      • configureSelf

        public static <T> T configureSelf​(@Nullable
                                          Closure configureClosure,
                                          T target,
                                          org.gradle.internal.metaobject.ConfigureDelegate closureDelegate)
        Called from an object's Configurable.configure(groovy.lang.Closure) method.