Gradle Extra Properties: Difference between revisions

From NovaOrdis Knowledge Base
Jump to navigation Jump to search
Line 13: Line 13:
<syntaxhighlight lang='groovy'>
<syntaxhighlight lang='groovy'>
project.ext.color = 'blue'
project.ext.color = 'blue'
</syntaxhighlight>
A benefit of using the closure over the other syntax is that multiple assignments can be declared compactly:
<syntaxhighlight lang='groovy'>
ext {
  color = 'blue'
  shape = 'square'
  size = 10
}
}
</syntaxhighlight>
</syntaxhighlight>


<syntaxhighlight lang='groovy'>
<syntaxhighlight lang='groovy'>

Revision as of 03:49, 5 October 2020

Internal

Overview

An extra property is a property that can be declared on most model object instances available to the closure being executed. Extra properties allow defining variables that are used multiple times within the same script, such as a file that is referred from multiple locations of the build script. An extra property is equivalent to a user-defined variable. Internally, extra properties are stored as key-value pairs in a map, associated with the model object instance, most notably the project instance.

To add properties, use an "ext" namespace closure:

ext {
  color = 'blue'
}

An equivalent assignment is:

project.ext.color = 'blue'

A benefit of using the closure over the other syntax is that multiple assignments can be declared compactly:

ext {
  color = 'blue'
  shape = 'square'
  size = 10
}


project.ext.color = 'green'
project.color = 'red' // project.ext.color and project.color are equivalent after property initialization

task displayColor {
  doLast {
    println project.ext.color
    println project.color
    println color
  }
}

For the above example, ./gradlew displayColor will display "red".

Note that the "ext" script block or project.ext syntax must only be used at declaration, for subsequent access the extra property can be looked up directly on the project instance.