【问题标题】:In Gradle, is there a better way to get Environment Variables?在 Gradle 中,有没有更好的方法来获取环境变量?
【发布时间】:2012-03-24 18:08:35
【问题描述】:

在几个任务中,我引用了我的主文件夹中的 jar。

有没有比获取环境变量更好的方法

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

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

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

这设置了 $HOME 但我希望我错过了文档中的一些魔力。

【问题讨论】:

  • 请注意,在 Gradle 可以看到和使用环境变量之前,需要将其导出,例如。 $ export FOO=bar.
  • 我在这里遗漏了一些东西......我必须输入def HOME:Gradle 4.4.1 Project 没有HOME 属性或ENV 属性。可能是退出的东西......?

标签: gradle environment-variables build.gradle gradle-kotlin-dsl


【解决方案1】:

好吧;这也有效:

home = "$System.env.HOME"

不清楚你的目标是什么。

【讨论】:

  • 或根据您的使用情况:进入 "${System.env.HOME}/something/plugins"
  • 请注意,如果环境变量 FOO 未定义为系统环境变量,“$System.env.FOO”将返回值为“null”的字符串。这可能会令人困惑,因为将值为“null”的字符串记录到控制台将打印与 null 变量相同的输出。
  • 或者只是 home = System.env.HOME ?
  • 如果您尝试获取可能未设置的环境变量,最好使用System.getenv('VAR'),如果未分配则返回 null。如果您使用"$System.env.VAR",那么它将返回字符串"null"
  • @chrish 你也可以使用System.env.VAR"$System.env.VAR" 返回(字符串)"null" 而不是 null 的原因是因为字符串插值,而不是因为使用 System.env 代替 System.getenv。使用"${System.getenv('VAR')}" 有完全相同的问题。
【解决方案2】:

我无法让@thoredge 建议的表单在 Gradle 1.11 中工作,但这对我有用:

home = System.getenv('HOME')

请记住,任何可以在纯 Java 中运行的东西也可以在 Gradle 中运行。

【讨论】:

  • 不知道为什么,但我只能让System.getenv('HOME') 版本为我工作。另一个版本不断返回null
  • 您是否错误地使用了单引号而不是双引号?
  • 这比答案更好:stackoverflow.com/a/9856769/689223,因为它返回null 而不是"null",以防万一它不存在。
【解决方案3】:

这适用于 Kotlin DSL (build.gradle.kts):

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

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

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")

【讨论】:

    【解决方案4】:

    在 android gradle 0.4.0 中你可以这样做:

    println System.env.HOME
    

    类路径 com.android.tools.build:gradle-experimental:0.4.0

    【讨论】:

    • thoredge 在你回答前 4 年就说过!
    猜你喜欢
    • 1970-01-01
    • 2019-07-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-14
    • 2010-11-11
    相关资源
    最近更新 更多