gradle - 如何从 Gradle 构建中设置环境变量?

标签 gradle environment-variables build.gradle

我正在尝试从我的 Gradle 构建中设置一个环境变量。我使用的是 MacOS X (El Capitan)。 命令是“gradle test”。

我正在我的 build.gradle 中尝试这个:

task setenv(type: Exec) {
    commandLine "export", "SOME_TEST_VAR=aaa"
}
test.dependsOn setenv

构建失败:

Execution failed for task ':myproject:setenv'.

A problem occurred starting process '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 进行依赖注入(inject)。我可能是错的,但看起来 Spring 框架在某处清除了这些值。

该子项目目前正在卡住,我现在无法详细检查我的猜测。

最佳答案

对于测试任务,您可以使用 environment property像这样:

test {
  environment "VAR", "val"
}

您还可以使用environment property在执行任务中

task dropDatabase(type: Exec) {
    environment "VAR", "val"
    commandLine "doit"
}

请注意,使用此方法时,环境变量仅在任务期间设置。

关于gradle - 如何从 Gradle 构建中设置环境变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36322536/

相关文章:

java - 当我在 Debug模式下执行 Gradle 测试时 IDEA 卡住

json - 在 json 文件中使用 Node envs

linux - 尝试在弹性 beanstalk 中添加盐和键作为环境变量(语法错误)

android - 带有gradle build 4.1的android studio 3.0.1中的Gradle同步错误

android - 找不到参数的方法 firebaseAppDistribution()

gradle - 无法使用Gradle运行应用程序:错误:找不到或加载主类1.8

groovy - Gradle复制任务-筛选闭包返回null时的null指针

gradle - 使用Kotlin DSL的Gradle全局插件存储库

python - 吉普错误!堆栈错误 : Can't find Python executable

android -> 任务 :app:checkDebugAarMetadata FAILED when run react-native run-android