Extra properties extensions allow new properties to be added to existing domain objects. They act like maps, allowing the storage of arbitrary key/value pairs. All {@link ExtensionAware} Gradle domain objects intrinsically have an extensionnamed “ {@value #EXTENSION_NAME}” of this type.
An important feature of extra properties extensions is that all of its properties are exposed for reading and writing via the {@link ExtensionAware}object that owns the extension.
project.ext.set("myProp", "myValue") assert project.myProp == "myValue" project.myProp = "anotherValue" assert project.myProp == "anotherValue" assert project.ext.get("myProp") == "anotherValue"Extra properties extension objects support Groovy property syntax. That is, a property can be read via {@code extension.«name»} and set via{@code extension.«name» = "value"}. Wherever possible, the Groovy property syntax should be preferred over the {@link #get(String)} and {@link #set(String,Object)} methods.
project.ext { myprop = "a" } assert project.myprop == "a" assert project.ext.myprop == "a" project.myprop = "b" assert project.myprop == "b" assert project.ext.myprop == "b"You can also use the Groovy accessor syntax to get and set properties on an extra properties extension.
project.ext["otherProp"] = "a" assert project.otherProp == "a" assert project.ext["otherProp"] == "a"The exception that is thrown when an attempt is made to get the value of a property that does not exist is different depending on whether the Groovy syntax is used or not. If Groovy property syntax is used, the Groovy {@link groovy.lang.MissingPropertyException} will be thrown.When the {@link #get(String)} method is used, an {@link UnknownPropertyException} will be thrown.
|
|
|
|