Установить переменную среды из сборки Gradle

Я пытаюсь установить переменную среды из моей сборки 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)?

Update:

Я тестировал его по отдельности: значения передаются, и моя тестовая задача получает все, будь то переменная systemProperty, переменные среды или jvmArgs.

Итак, здесь ничего не случилось с Gradle.

Проблема возникает, когда я пытаюсь использовать настоящий проект. Он использует Spring для инъекции зависимостей. Возможно, я ошибаюсь, но похоже, что структура Spring чистит эти значения где-то.

Этот подпроект в настоящее время заморожен, и я не могу сейчас подробно проверить свое предположение.

Ответы

Ответ 1

Для тестовой задачи вы можете использовать свойство среды следующим образом:

test {
  environment "VAR", "val"
}

вы также можете использовать свойство среды в задаче exec

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

Обратите внимание, что с помощью этого метода переменные среды устанавливаются только во время задачи.

Ответ 2

Этот работает для меня для переменной среды настроек для тестового плагина

test {
    systemProperties = [
        'catalina.home': 'c:/test'
    ]
    println "Starting Tests"
    beforeTest { descriptor ->
       logger.lifecycle("Running test: " + descriptor)                
    }    
}

Ответ 3

Вы также можете "добавить" значение переменной среды, используя команду "environment":

run.doFirst { environment 'SPARK_LOCAL_IP', 'localhost' }