【发布时间】:2016-07-19 06:22:21
【问题描述】:
我正在尝试从我的 Gradle 构建中设置一个环境变量。我在 MacOS X (El Capitan) 上。 命令是“gradle test”。
我正在我的 build.gradle 中尝试这个:
task setenv(type: Exec) {
commandLine "export", "SOME_TEST_VAR=aaa"
}
test.dependsOn setenv
构建失败:
任务 ':myproject:setenv' 执行失败。
启动进程'command 'export''时出现问题
我也试过这个:
test.doFirst {
ProcessBuilder pb1 = new ProcessBuilder("export SOME_TEST_VAR=some test value")
pb1.start();
}
构建成功。但是,如果我在 JUnit 测试中检查环境变量,它会失败:
assertTrue(System.getenv().containsKey("SOME_TEST_VAR"));
有没有办法从 Gradle 构建(在 build.gradle 文件中)设置环境变量?
更新:
我已经单独对其进行了测试:值确实通过了,并且我的测试任务接收了所有内容,无论是 systemProperty、环境变量还是 jvmArgs。
所以,这里的 Gradle 本身并没有什么问题。
当我在实际项目中尝试时,问题就出现了。它使用 Spring 进行依赖注入。我可能错了,但看起来 Spring 框架在某处清除了这些值。
该子项目目前被冻结,我现在无法详细检查我的猜测。
【问题讨论】:
-
另一个失败的实验:
test { systemProperty 'SOME_TEST_VAR', 'aaa' environment 'SOME_TEST_VAR', 'aaa' }并在测试中:boolean good = System.getenv().containsKey("SOME_TEST_VAR") || System.getProperties().containsKey("SOME_TEST_VAR"); assertTrue(good); -
即使在阅读了帮助之后,我也无法在此处设置换行符。抱歉,请假设我打算在哪里制作它们。
-
如果您需要提供更多信息,您应该编辑您的问题。
-
更新了问题。问题不在于 Gradle。
标签: gradle environment-variables build.gradle