org.gradle.api.plugins
Interface ExtensionAware

All Known Subinterfaces:
Project, Task
All Known Implementing Classes:
AbstractArchiveTask, AbstractCompile, AbstractCopyTask, AbstractJettyRunTask, AbstractReportTask, org.gradle.api.internal.AbstractTask, AntlrTask, AntTarget, Compile, org.gradle.api.internal.ConventionTask, Copy, DefaultTask, Delete, DependencyReportTask, Exec, GeneratorTask, GradleBuild, GroovyCompile, Groovydoc, Javadoc, JavaExec, JettyRun, JettyRunWar, JettyStop, ProjectReportTask, PropertiesGeneratorTask, PropertyReportTask, ScalaCompile, ScalaDoc, SourceTask, Sync, Tar, TaskReportTask, Test, Upload, Wrapper, XmlGeneratorTask, Zip

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 extensnion 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

ExtensionContainer getExtensions()
The container of extensions.