Я использую maven как инструмент сборки. Я установил переменную среды, называемую env
. Как получить доступ к этому значению переменной среды в файле pom.xml
?
Как передать переменную среды в POM.xml?
Ответ 1
Посмотрите Руководство по свойствам Maven...
Как отметил Сешагири в комментариях, ${env.variable_name}
сделает то, что вы хотите.
Я добавлю слово предупреждения и скажу, что pom.xml
должен полностью описать ваш проект, поэтому разумно используйте переменные среды. Если вы делаете свои сборки зависимыми от своей среды, их труднее воспроизвести
Ответ 2
Возможно, было бы безопаснее напрямую передавать переменные окружения в свойства системы maven. Например, скажем, в Linux вы хотите получить доступ к переменной среды MY_VARIABLE. Вы можете использовать системное свойство в вашем файле pom.
<properties>
...
<!-- Default value for my.variable can be defined here -->
<my.variable>foo</my.variable>
...
</properties>
...
<!-- Use my.variable -->
... ${my.variable} ...
Задайте значение свойства в командной строке maven:
mvn clean package -Dmy.variable=$MY_VARIABLE
Ответ 3
Кроме того, убедитесь, что ваша переменная состоит только из ВЕРХНЕЙ ЧАСТИ ПИСЬМА.... Я не знаю, почему (в документации ничего не сказано явный об этом, по крайней мере, ссылка, предоставленная @Andrew White), но если переменная является строчным словом (например, env.dummy), переменная всегда будет пустой или пустой...
Я боролся с этим как час, пока не решил попробовать ВЕРХНЕЙ ЧАСТИ ПЕРЕМЕН, и проблема решена.
Примеры переменных OK:
- DUMMY
- DUMMY_ONE
- JBOSS_SERVER_PATH
( ПРИМЕЧАНИЕ: я использовал maven v3.0.5)
Надеюсь, что это может помочь кому-то....
Ответ 4
Нельзя ли использовать
<properties>
<my.variable>${env.MY_VARIABLE}</my.variable>
</properties>
Ответ 5
Я боролся с тем же, запуская оболочку script, которая задавала переменные, а затем хотела использовать переменные в shared-pom. Цель состояла в том, чтобы переменные среды заменяли строки в файлах проекта, используя com.google.code.maven-replacer-plugin.
Использование ${env.foo}
или ${env.foo}
не помогло мне. Мейвен просто не нашел переменную. То, что работало, заключалось в передаче переменной в качестве параметра командной строки в Maven. Здесь настройка:
-
Задайте переменную в оболочке script. Если вы запускаете Maven в под-script, убедитесь, что переменная становится установленной, например. используя
source ./maven_script.sh
, чтобы вызвать его из родительского script. -
В shared-pom создайте параметр командной строки, который захватывает переменную среды:
<plugin> ... <executions> <executions> ... <execution> ... <configuration> <param>${foo}</param> <!-- Note this is *not* ${env.foo} --> </configuration>
-
В com.google.code.maven-replacer-plugin введите значение замены
${foo}
. -
В моей оболочке script, которая вызывает maven, добавьте это в команду:
-Dfoo=$foo