public interface ExtensionAware
// 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.
| Modifier and Type | Method and Description |
|---|---|
ExtensionContainer |
getExtensions()
The container of extensions.
|
ExtensionContainer getExtensions()