Groovy Documentation

org.gradle.api.plugins
[Java] Interface ExtensionAware


public interface ExtensionAware

Objects that can be extended at runtime with other objects.

 // Extensions are just plain objects, there is no interface/type
 class MyExtension {
   String foo

   MyExtension(String foo) {
     this.foo = foo
   }
 }

 // Add new extensions via the extension container
 project.extensions.create('custom', MyExtension, "bar")
 //                       («name»,   «type»,       «constructor args», …)

 // extensions appear as properties on the target object by the given name
 assert project.custom instanceof MyExtension
 assert project.custom.foo == "bar"

 // also via a namespace method
 project.custom {
   assert foo == "bar"
   foo = "other"
 }
 assert project.custom.foo == "other"

 // Extensions added with the extension container's create method are themselves extensible
 assert project.custom instanceof ExtensionAware
 project.custom.extensions.create("nested", MyExtension, "baz")
 assert project.custom.nested.foo == "baz"

 // All extension aware objects have a special “ext” extension of type ExtraPropertiesExtension
 assert project.hasProperty("myProperty") == false
 project.ext.myProperty = "myValue"

 // Properties added to the “ext” extension are promoted to the owning object
 assert project.myProperty == "myValue"
 
Many Gradle objects are extension aware. This includes; projects, tasks, configurations, dependencies etc.

For more on adding & creating extensions, see ExtensionContainer.

For more on extra properties, see ExtraPropertiesExtension.


Method Summary
ExtensionContainer getExtensions()

The container of extensions.

 

Method Detail

getExtensions

public ExtensionContainer getExtensions()
The container of extensions.


 

Gradle API 1.12