Gradle Variables and Properties: Difference between revisions
Line 37: | Line 37: | ||
===gradle.properties Files=== | ===gradle.properties Files=== | ||
<tt>gradle.properties</tt> can be used to define [[#Properties|properties]] for the build. <tt>gradle.properties</tt> files can be placed either in Gradle user home directory (~/.gradle/gradle.properties) or in the project root directory. If both files are present, their content is merged and the configuration that comes from the user home directory takes precedence over the configuration that comes from the project root directory. If a command line -D''property-name''=... is specified, the value overrides the value read from the property files, if any. | <font color=darkgray><tt>gradle.properties</tt> can be used to define [[#Properties|properties]] for the build. <tt>gradle.properties</tt> files can be placed either in Gradle user home directory (~/.gradle/gradle.properties) or in the project root directory. If both files are present, their content is merged and the configuration that comes from the user home directory takes precedence over the configuration that comes from the project root directory. If a command line -D''property-name''=... is specified, the value overrides the value read from the property files, if any.</font> | ||
Form a security perspective, it makes sense to use the user home directory if the project is checked into a repository and we do not want to maintain sensitive information in that file. | Form a security perspective, it makes sense to use the user home directory if the project is checked into a repository and we do not want to maintain sensitive information in that file. |
Revision as of 17:10, 23 May 2018
External
Internal
Overview
Concepts
Properties
The effective value of the properties can be displayed with:
gradle properties
System Properties
Gradle Properties
Project Properties
Where are These Properties Provided
These configuration methods are listed in the descending order of their precedence, with the highest precedence at the top. The first one encountered wins.
Command Line Flags
Command line flags have precedence over properties and environment variables with the same effect. See:
Command Line Property Definitions
-D
-P defines project properties.
gradle.properties Files
gradle.properties can be used to define properties for the build. gradle.properties files can be placed either in Gradle user home directory (~/.gradle/gradle.properties) or in the project root directory. If both files are present, their content is merged and the configuration that comes from the user home directory takes precedence over the configuration that comes from the project root directory. If a command line -Dproperty-name=... is specified, the value overrides the value read from the property files, if any.
Form a security perspective, it makes sense to use the user home directory if the project is checked into a repository and we do not want to maintain sensitive information in that file.
someUser=someuser
somePassword=somepassword
Gradle User Home gradle.properties
Project Root gradle.properties
This property definition vehicle is important because it can be stored in source control, so the entire team working on the project can share the same configuration.
Environment Variables
Environment variables such as GRADLE_OPTS and JAVA_OPTS are sourced by the environment that executes Gradle. These environment variables can be used to provide properties definition, but they are only available in a specific user's environment, and do not propagate to version control. For definitions that propagate to version control, so an entire team can use them, use the project root gradle.properties.