Как ссылаться на переменную среды в POM.xml?



Я использую maven в качестве инструмента сборки. Я установил переменную окружения с именем env. Как я могу получить доступ к значению этой переменной среды в ?

978   5  

5 ответов:

Проверьте Руководство По Свойствам Maven...

Как указал Сешагири в комментариях,${env.VARIABLE_NAME} будет делать то, что вы хотите.

Я добавлю слово предупреждения и скажу, что a pom.xml должен полностью описать ваш проект, поэтому, пожалуйста, используйте переменные среды разумно. Если вы делаете свои сборки зависимыми от вашей среды, их труднее воспроизвести

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

кроме того, убедитесь, что ваш переменные среды и состоит только из прописных букв.... Я не знаю, почему (в документации ничего не говорится об этом, по крайней мере, ссылка, предоставленная @Andrew White), но если переменная является строчным словом (например, env.dummy), переменная всегда приходила пустой или нулевой...

Я боролся с этим, как час, пока я не решил попробовать переменную верхнего регистра, и проблема решена.

ОК Переменные Примеры:

  • пустышка
  • DUMMY_ONE
  • JBOSS_SERVER_PATH

(Примечание: я использовал maven v3.0. 5)

Я надеюсь, что это может помочь кому-то....

мы не можем использовать

<properties>
    <my.variable>${env.MY_VARIABLE}</my.variable>
</properties>

я боролся с тем же самым, запустив сценарий оболочки, который устанавливает переменные, а затем хочет использовать переменные в shared-pom. Цель состояла в том, чтобы переменные среды заменяли строки в моих файлах проекта с помощью com.гуглить.код.maven-replacer-плагин.

используя ${env.foo} или ${env.FOO} не работает для меня. Мэйвен просто не находил переменную. То, что работало, передавало переменную в качестве параметра командной строки в Maven. Вот настройка:

  1. установите переменную в сценарии оболочки. Если вы запускаете Maven в суб-скрипт, убедитесь, что переменная становится набор, например, с помощью source ./maven_script.sh чтобы вызвать его из родительского скрипта.

  2. в shared-pom создайте параметр командной строки, который захватывает переменную среды:

<plugin>
  ...
  <executions>
    <executions>
    ...
      <execution>
      ...
        <configuration>
          <param>${foo}</param> <!-- Note this is *not* ${env.foo} -->
        </configuration>
  1. в com.гуглить.код.maven-replacer-плагин, сделать значение замены ${foo}.

  2. в моем сценарии оболочки, который вызывает maven, добавьте это в команду:-Dfoo=$foo

Comments

    Ничего не найдено.