In Gradle, is there a better way to get Environment Variables?

GradleEnvironment Variablesbuild.gradleGradle Kotlin-Dsl

Gradle Problem Overview


In several Tasks, I reference jars in my home folder.

Is there a better way to get Environment Variables than

ENV = System.getenv()
HOME = ENV['HOME']

task copyToServer(dependsOn: 'jar', type: Copy) {

 from 'build/libs/'
 into HOME + "/something/plugins/"
}

This sets $HOME but I was hoping that I missed some magic from the documentation.

Gradle Solutions


Solution 1 - Gradle

Well; this works as well:

home = "$System.env.HOME"

It's not clear what you're aiming for.

Solution 2 - Gradle

I couldn't get the form suggested by @thoredge to work in Gradle 1.11, but this works for me:

home = System.getenv('HOME')

It helps to keep in mind that anything that works in pure Java will work in Gradle too.

Solution 3 - Gradle

In android gradle 0.4.0 you can just do:

println System.env.HOME

classpath com.android.tools.build:gradle-experimental:0.4.0

Solution 4 - Gradle

This is for Kotlin DSL (build.gradle.kts):

val myVariable = System.getenv("MY_VARIABLE_NAME") ?: "my default value"

OR

val myVariable = System.getenv("MY_VARIABLE_NAME") ?: error("Env variable not found")

OR

val environment = System.getenv()
val myVariable = environment["MY_VARIABLE_NAME"] ?: "my default value"
// OR val myVariable = environment["MY_VARIABLE_NAME"] ?: error("Env variable not found")

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionNicholas MarshallView Question on Stackoverflow
Solution 1 - GradlethoredgeView Answer on Stackoverflow
Solution 2 - GradleJarett MillardView Answer on Stackoverflow
Solution 3 - GradleYochai TimmerView Answer on Stackoverflow
Solution 4 - GradleMahozadView Answer on Stackoverflow