Ответ 1
Мне пришлось провести некоторое исследование в этой теме и попытаться прояснить некоторые открытые проблемы. Я бы сделал это в двух комментариях, но у меня пока нет достаточной репутации. Так как я нашел Игоря Ганапольского комментарий и на других сайтах, но без ответа каждый раз, когда я чувствую необходимость писать другой ответ, даже если на вопрос уже ответил.
Как сказал Мартин Раджняк, вы можете установить переменную среды, как он показал. Но эта переменная действительна только для заданной задачи или соответствующего процесса. Это означает, что вы не можете использовать его в следующей задаче. Я проверил, что, задав две зависимые задачи:
task('firstTask', type:Exec) {
environment "FOO", "bar"
workingDir '.'
commandLine 'cmd', '/c', 'print.bat'
}
task ('secondTask', type:Exec) {
dependsOn firstTask
workingDir '.'
commandLine 'cmd', '/c', 'print.bat'
}
Команда print.bat
выполняет только эхо-переменную среды:
@echo off
echo %FOO%
Запуск сборки с помощью команды gradle secondTask
даст:
> Task :firstTask
bar
> Task :secondTask
ECHO ist ausgeschaltet (OFF).
Итак, переменная окружения больше не существует для secondTask
.
Так много для актуальной темы, но есть еще одна важная вещь, которая может быть причиной проблемы Игоря:
Метод environment
недоступен для каждой задачи Gradle. Как вы можете видеть в документации Exec
-task-type, метод environment
явно определен для Exec
-task -типа.
Чтобы быть полным, я хочу упомянуть, что вы можете передавать переменные в java-процесс, используя JavaExec
-task-type и его метод systemProperty
. Но вы не можете использовать environment
здесь, потому что этот метод не определен для JavaExec
-task-type.
Однако я все еще ищу способ определить переменную среды, которая действительна для всей сборки, не определяя ее непосредственно через операционную систему.