DependencyHandler, ObjectFilesToBinary, Project, Settings, SourceSet, TaskAbstractArchiveTask, AbstractCompile, AbstractCopyTask, AbstractDependencyReportTask, AbstractExecTask, AbstractLinkTask, AbstractNativeCompileTask, AbstractNativePCHCompileTask, AbstractNativeSourceCompileTask, AbstractPublishToMaven, AbstractReportTask, AbstractScalaCompile, org.gradle.api.internal.AbstractTask, AbstractTestTask, AntlrTask, AntTarget, ApiJar, Assemble, BrowserEvaluate, BuildEnvironmentReportTask, CCompile, Checkstyle, CodeNarc, CoffeeScriptCompile, CompareGradleBuilds, ComponentReport, org.gradle.api.internal.ConventionTask, Copy, CppCompile, CppPreCompiledHeaderCompile, CPreCompiledHeaderCompile, CreateStartScripts, CreateStartScripts, CreateStaticLibrary, DefaultTask, Delete, DependencyInsightReportTask, DependencyReportTask, DependentComponentsReport, Ear, Exec, ExtractSymbols, FindBugs, GenerateBuildDashboard, GenerateCUnitLauncher, GenerateEclipseClasspath, GenerateEclipseJdt, GenerateEclipseProject, GenerateEclipseWtpComponent, GenerateEclipseWtpFacet, GenerateFiltersFileTask, GenerateIdeaModule, GenerateIdeaProject, GenerateIdeaWorkspace, GenerateIvyDescriptor, GenerateMavenPom, GenerateModuleMetadata, GeneratePluginDescriptors, GenerateProjectFileTask, GenerateSchemeFileTask, GenerateSolutionFileTask, GenerateSwiftPackageManagerManifest, GenerateWorkspaceSettingsFileTask, GenerateXcodeProjectFileTask, GenerateXcodeWorkspaceFileTask, GeneratorTask, GradleBuild, GroovyCompile, Groovydoc, HtmlDependencyReportTask, InitBuild, InstallExecutable, InstallXCTestBundle, JacocoBase, JacocoCoverageVerification, JacocoMerge, JacocoReport, JacocoReportBase, Jar, Jar, JavaCompile, Javadoc, JavaExec, JavaScriptMinify, JDepend, JsHint, LinkExecutable, LinkMachOBundle, LinkSharedLibrary, ModelReport, ObjectiveCCompile, ObjectiveCppCompile, ObjectiveCppPreCompiledHeaderCompile, ObjectiveCPreCompiledHeaderCompile, PlatformJavaCompile, PlatformScalaCompile, PlayCoffeeScriptCompile, PlayRun, PluginUnderTestMetadata, Pmd, PrefixHeaderFileGenerateTask, ProcessResources, ProjectReportTask, PropertiesGeneratorTask, PropertyListGeneratorTask, PropertyReportTask, PublishToIvyRepository, PublishToMavenLocal, PublishToMavenRepository, RhinoShellExec, RoutesCompile, RunTestExecutable, ScalaCompile, ScalaDoc, Sign, SourceTask, StripSymbols, SwiftCompile, Sync, Tar, TaskReportTask, Test, TestReport, TwirlCompile, UnexportMainSymbol, Upload, ValidateTaskProperties, War, WindowsResourceCompile, Wrapper, WriteProperties, XCTest, XmlGeneratorTask, Zippublic 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.
An ExtensionAware object has several 'scopes' that Gradle searches for properties. These scopes are:
propertyMissing(). Care must be taken by plugin authors to
ensure propertyMissing() is implemented such that if a property is not found a MissingPropertyException(String, Class) exception is thrown.
If propertyMissing() always returns a value for any property, Gradle will not search the rest of the scopes below.| Modifier and Type | Method | Description |
|---|---|---|
ExtensionContainer |
getExtensions() |
The container of extensions.
|
ExtensionContainer getExtensions()