Установить переменную среды из сборки 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' }