Переменные среды не обновляются во время развертывания
Что мы делаем:
Мы делаем автоматическое развертывание с использованием инструмента под названием Nolio. Один из шагов, который нам нужно сделать, - установить несколько переменных среды для развертываемых приложений - например, JAVA_HOME
указывая на наш предпочтительный каталог установки Java.
Мы используем SET
Команда для постоянной установки переменных среды - и в большинстве случаев она прекрасно работает. Если я щелкну правой кнопкой мыши на своем компьютере и зайду в переменные окружения, все они будут выглядеть идеально.
Эта проблема:
К сожалению, в дальнейшем при развертывании выполняются некоторые команды командной строки, которые зависят от переменных среды, и переменные среды, по-видимому, не установлены. С помощью SET
без параметров это проверяется путем отображения всех доступных на данный момент переменных.
Теперь, если я перезагружаю компьютер, команды командной строки работают нормально. Итак, проблема в том, что, хотя переменные установлены постоянно и отображаются в графическом интерфейсе, они не передаются в командные строки до перезагрузки.
Еще один интересный момент: если я помещаю команды в BAT-файл и дважды щелкаю по нему, он работает нормально, но если я выполняю его в командной строке, переменные не разрешаются до перезагрузки.
Кто-нибудь знает способ обойти это?
3 ответа
Во-первых, какую версию Nolio вы используете?
Переменные окружения, которым вы устанавливаете значение в контексте одного действия Nolio, остаются в области действия этого действия. (Это как открыть две разные оболочки на каждое действие)
В этом случае рекомендуется использовать массивы переменных среды в действии Nolio "Выполнить командную строку". Вы должны написать два массива параллельных имен и значений переменных Env и передать их в качестве входных данных для действия "Выполнить командную строку".
Похоже, ваши переменные не находятся в области видимости для командной строки. На каком этапе процесса развертывания вы используете SET
команда? Интересно, что GUI распознает значения, но командная строка не до перезагрузки.
Кроме того, мне не ясно, почему использование файла.bat нежелательно. Я могу придумать свои собственные причины, но каковы ваши?
РЕДАКТИРОВАТЬ
Я нашел эту статью, которая показывает шаг, который вы не упомянули. Ты пытался:
rem Set the JAVA_HOME environment variable and insert it into the system path.
rem This will make the javac and java commands reachable from the command line.
set JAVA_HOME="C:\Program Files\Java\jdk1.5.0_14"
set PATH=%JAVA_HOME%\bin;%PATH%
Я не совсем уверен, почему командная строка не распознает команды, а командные файлы будут, но вы могли бы использовать SETX
в качестве альтернативы SET
чтобы увидеть, решит ли это ваши проблемы.