use*_*111 41 environment-variables gradle build.gradle
我正在尝试从Gradle构建中设置环境变量.我在MacOS X(El Capitan)上.该命令是"gradle test".
我在build.gradle中尝试这个:
task setenv(type: Exec) {
commandLine "export", "SOME_TEST_VAR=aaa"
}
test.dependsOn setenv
Run Code Online (Sandbox Code Playgroud)
并且构建失败:
任务':myproject:setenv'的执行失败.
启动进程'命令'导出'出现问题''
我也试过这个:
test.doFirst {
ProcessBuilder pb1 = new ProcessBuilder("export SOME_TEST_VAR=some test value")
pb1.start();
}
Run Code Online (Sandbox Code Playgroud)
构建成功.但是,如果我在JUnit测试中检查环境变量,它将失败:
assertTrue(System.getenv().containsKey("SOME_TEST_VAR"));
Run Code Online (Sandbox Code Playgroud)
有没有办法从Gradle构建(在build.gradle文件中)设置环境变量?
更新:
我已经单独测试了它:值传递了,我的测试任务收到了所有东西,无论是systemProperty,环境变量还是jvmArgs.
所以,Gradle本身并没有错.
当我在真实项目上尝试它时,问题就出现了.它使用Spring进行依赖注入.我可能错了,但看起来Spring框架在某处清除了这些值.
该子项目目前正在冻结,我现在无法详细检查我的猜测.
Ort*_*kni 46
对于测试任务,您可以使用如下环境属性:
test {
environment "VAR", "val"
}
Run Code Online (Sandbox Code Playgroud)
您还可以在exec任务中使用environment属性
task dropDatabase(type: Exec) {
environment "VAR", "val"
commandLine "doit"
}
Run Code Online (Sandbox Code Playgroud)
请注意,使用此方法时,仅在任务期间设置环境变量.
如果您使用 Gradle Kotlin 语法,您还可以执行以下操作:
tasks.taskName {
environment(mapOf("A" to 1, "B" to "C"))
}
Run Code Online (Sandbox Code Playgroud)
所以对于test任务来说,这将是:
tasks.test {
environment(mapOf("SOME_TEST_VAR" to "aaa"))
}
Run Code Online (Sandbox Code Playgroud)
您还可以使用 'environment' 命令“预先添加”环境变量设置:
run.doFirst { environment 'SPARK_LOCAL_IP', 'localhost' }
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
71584 次 |
| 最近记录: |