Passing Configuration to a Gradle Build via Custom Environment Variables
Internal
Overview
This article describes a generic method to pass configuration to a Gradle build using custom environment variables. This method could prove useful when Gradle builds are executed in containers, as it is the case for AWS CodeBuild builds.
Playground
Procedure
The method consists in defining a project extra property that is initialized with the value of the custom environment variable, or to a default value if the environment variable is not defined. The following code sequence is added to build.gradle, in the ext closure:
ext {
projectExtPropertyInformedByEnvironmentVariable = "default value"
String s = System.getenv("CUSTOM_ENVIRONMENT_VARIABLE");
if (s != null) {
projectExtPropertyInformedByEnvironmentVariable = s;
}
}
The following task displays the property value:
ask display {
println projectExtPropertyInformedByEnvironmentVariable
}
If CUSTOM_ENVIRONMENT_VARIABLE is not set, executing the "display" task results in:
gradle display > Configure project : default value BUILD SUCCESSFUL in 0s
Setting the environment variable propagates it to the build:
export CUSTOM_ENVIRONMENT_VARIABLE=BLAH gradle display > Configure project : BLAH BUILD SUCCESSFUL in 0s
If you need to stop the build with an error if the environment variable is not found in the environment, see: