在Gradle中读取系统环境变量

5
我有点好奇学习如何从系统环境变量(Windows/Mac/Linux)中加载私有凭证到Android的build.gradle或其他gradle配置文件中。可能有方法或途径可以实现这一点,但真正寻找方向。 我已经尝试过但没有成功的几件事情是:

注意:我在Windows环境中尝试并获取了null

在Gradle中,有更好的方法获取环境变量吗?

https://javabydeveloper.com/gradle-system-properties-via-command-line-step-by-step-example/

如何通过Gradle和-D为我的测试提供系统属性

https://dzone.com/articles/specifying-gradle-build

https://discuss.gradle.org/t/how-should-i-be-handling-passing-system-properties-from-gradle-to-my-tests/7171/3


1
“didn't work for me” 是什么意思?你的症状是什么?另外,你在哪里和如何使用Gradle:命令行?CI服务器?Android Studio?其他IDE? - CommonsWare
如果您需要签名密钥的数据,我将创建一个gradle.properties文件并将其存储在: 〜/ .gradle / gradle.properties。(在Mac上) - I.Step
我正在尝试在Android Studio的build.gradle文件中访问系统环境变量,但是我通过链接中提到的每种方法都得到了NULL - Nah
这可能会有所帮助:https://dev59.com/KnHYa4cB1Zd3GeqPQNBy#16414092 - crazo7924
1个回答

5

在Gradle脚本中,您可以使用System.getenv('MY_VAR')访问名为MY_VAR的变量。如果该变量不存在,则返回null。这在所有平台上都应该同样适用。

例如,在build.gradle脚本中:

def myVar = System.getenv('MY_VAR')
println(myVar)

在Linux shell中使用Gradle 7.2测试,执行MY_VAR='it works!' ./gradlew projects命令会在控制台输出以下信息(以及其他一些信息):

> Configure project :
it works!

1
非常奇怪,当我尝试像你一样访问它时,我得到了“Null”。 - Nah
你是否得到了 null(全小写)?你是否在 Linux bash shell 中运行了“完全相同”的命令?你确定环境变量已经设置好,可以被你尝试访问的进程所使用吗? - Chriki
我正在使用Windows 10,一旦我设置了系统环境变量,当我运行gradle时就什么也得不到。你能否在你的Windows上尝试一下? - Nah
很不幸,我没有Windows系统来测试这个问题。但是,这个问题听起来好像环境变量并没有正确地被提供给gradle进程。在你的build.gradle中打印整个环境变量集合时,是否可以看到该变量(例如使用println(System.getenv()))? - Chriki

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接