如何通过命令行向Gradle测试传递环境变量?
解决方案
你用-D传递的是JVM系统属性,但代码里用System.getenv()读取的是操作系统环境变量,两者并非同一概念,所以之前的命令无效。要直接传递环境变量给测试JVM,无需修改构建脚本或新增任务,只需在执行Gradle命令前先设置环境变量,具体分系统操作:
Unix/Linux/macOS(bash/zsh等Shell环境)
直接在命令前拼接环境变量赋值:
my_var=xyz ./gradlew test
Windows命令提示符(CMD)
先设置环境变量,再链式执行Gradle命令:
set my_var=xyz && gradlew test
Windows PowerShell
通过环境变量对象设置后执行命令:
$env:my_var="xyz"; ./gradlew test
原理是:Gradle启动测试JVM时,会自动继承当前Shell/命令行会话中的环境变量,这样测试代码里的System.getenv("my_var")就能读取到对应的值。
内容的提问来源于stack exchange,提问作者piotrek
相关产品推荐
相关产品推荐

